From 0b720d084e30bbe553f48c977854d28dfd47b10c Mon Sep 17 00:00:00 2001 From: kunfei Date: Mon, 14 Feb 2022 11:46:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/book/source/manage/BookSourceActivity.kt | 15 +++++++-------- .../main/bookshelf/style1/books/BooksFragment.kt | 14 +++++++------- .../main/bookshelf/style2/BookshelfFragment2.kt | 11 +++++------ 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt index 2723f3aaa..0b639bfe6 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt @@ -42,12 +42,11 @@ import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.utils.* import io.legado.app.utils.viewbindingdelegate.viewBinding import kotlinx.coroutines.* -import kotlinx.coroutines.flow.catch -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.flow -import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.flow.* -@ExperimentalCoroutinesApi +/** + * 书源管理界面 + */ class BookSourceActivity : VMBaseActivity(), PopupMenu.OnMenuItemClickListener, BookSourceAdapter.CallBack, @@ -233,9 +232,7 @@ class BookSourceActivity : VMBaseActivity { appDb.bookSourceDao.flowSearch("%$searchKey%") } - }.catch { - AppLog.put("书源界面更新书源出错", it) - }.mapLatest { data -> + }.conflate().map { data -> if (sortAscending) when (sort) { Sort.Weight -> data.sortedBy { it.weight } Sort.Name -> data.sortedWith { o1, o2 -> @@ -270,6 +267,8 @@ class BookSourceActivity : VMBaseActivity data.reversed() } + }.catch { + AppLog.put("书源界面更新书源出错", it) }.collectLatest { data -> adapter.setItems(data, adapter.diffItemCallback) } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt index efa72ab0f..f9b0ffa0d 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt @@ -23,17 +23,17 @@ import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.main.MainViewModel import io.legado.app.utils.* import io.legado.app.utils.viewbindingdelegate.viewBinding -import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job import kotlinx.coroutines.flow.catch -import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.conflate +import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlin.math.max /** * 书架界面 */ -@ExperimentalCoroutinesApi class BooksFragment() : BaseFragment(R.layout.fragment_books), BaseBooksAdapter.CallBack { @@ -110,9 +110,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), AppConst.bookGroupAudioId -> appDb.bookDao.flowAudio() AppConst.bookGroupNoneId -> appDb.bookDao.flowNoGroup() else -> appDb.bookDao.flowByGroup(groupId) - }.catch { - AppLog.put("书架更新出错", it) - }.mapLatest { list -> + }.conflate().map { list -> when (getPrefInt(PreferKey.bookshelfSort)) { 1 -> list.sortedByDescending { it.latestChapterTime } 2 -> list.sortedWith { o1, o2 -> @@ -121,7 +119,9 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), 3 -> list.sortedBy { it.order } else -> list.sortedByDescending { it.durChapterTime } } - }.collect { list -> + }.catch { + AppLog.put("书架更新出错", it) + }.collectLatest { list -> binding.tvEmptyMsg.isGone = list.isNotEmpty() booksAdapter.setItems(list) } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt index 30008647e..6a8a5c778 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt @@ -25,18 +25,17 @@ import io.legado.app.ui.book.search.SearchActivity import io.legado.app.ui.main.bookshelf.BaseBookshelfFragment import io.legado.app.utils.* import io.legado.app.utils.viewbindingdelegate.viewBinding -import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.flow.conflate +import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlin.math.max /** * 书架界面 */ -@ExperimentalCoroutinesApi class BookshelfFragment2 : BaseBookshelfFragment(R.layout.fragment_bookshelf1), SearchView.OnQueryTextListener, BaseBooksAdapter.CallBack { @@ -124,9 +123,7 @@ class BookshelfFragment2 : BaseBookshelfFragment(R.layout.fragment_bookshelf1), AppConst.bookGroupAudioId -> appDb.bookDao.flowAudio() AppConst.bookGroupNoneId -> appDb.bookDao.flowNoGroup() else -> appDb.bookDao.flowByGroup(groupId) - }.catch { - AppLog.put("书架更新出错", it) - }.mapLatest { list -> + }.conflate().map { list -> when (getPrefInt(PreferKey.bookshelfSort)) { 1 -> list.sortedByDescending { it.latestChapterTime @@ -141,6 +138,8 @@ class BookshelfFragment2 : BaseBookshelfFragment(R.layout.fragment_bookshelf1), it.durChapterTime } } + }.catch { + AppLog.put("书架更新出错", it) }.collectLatest { list -> books = list booksAdapter.notifyDataSetChanged()