kunfei 4 лет назад
Родитель
Сommit
92b3bb9fbc

+ 6 - 2
app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt

@@ -42,7 +42,10 @@ import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.utils.*
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.*
 import kotlinx.coroutines.*
-import kotlinx.coroutines.flow.*
+import kotlinx.coroutines.flow.catch
+import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.map
 
 
 /**
 /**
  * 书源管理界面
  * 书源管理界面
@@ -269,8 +272,9 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
                 }
                 }
             }.catch {
             }.catch {
                 AppLog.put("书源界面更新书源出错", it)
                 AppLog.put("书源界面更新书源出错", it)
-            }.collectLatest { data ->
+            }.collect { data ->
                 adapter.setItems(data, adapter.diffItemCallback)
                 adapter.setItems(data, adapter.diffItemCallback)
+                delay(500)
             }
             }
         }
         }
     }
     }

+ 4 - 2
app/src/main/java/io/legado/app/ui/book/toc/BookmarkFragment.kt

@@ -17,7 +17,8 @@ import io.legado.app.utils.setEdgeEffectColor
 import io.legado.app.utils.showDialogFragment
 import io.legado.app.utils.showDialogFragment
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.Job
-import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
 
 
 
 
@@ -51,8 +52,9 @@ class BookmarkFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_bookmark
             when {
             when {
                 searchKey.isNullOrBlank() -> appDb.bookmarkDao.flowByBook(book.name, book.author)
                 searchKey.isNullOrBlank() -> appDb.bookmarkDao.flowByBook(book.name, book.author)
                 else -> appDb.bookmarkDao.flowSearch(book.name, book.author, searchKey)
                 else -> appDb.bookmarkDao.flowSearch(book.name, book.author, searchKey)
-            }.collectLatest {
+            }.conflate().collect {
                 adapter.setItems(it)
                 adapter.setItems(it)
+                delay(100)
             }
             }
         }
         }
     }
     }

+ 4 - 6
app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt

@@ -21,13 +21,10 @@ import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.utils.ColorUtils
 import io.legado.app.utils.ColorUtils
 import io.legado.app.utils.observeEvent
 import io.legado.app.utils.observeEvent
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
-import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.*
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Dispatchers.Main
 import kotlinx.coroutines.Dispatchers.Main
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.flow.collectLatest
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
+import kotlinx.coroutines.flow.conflate
 
 
 class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapter_list),
 class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapter_list),
     ChapterListAdapter.Callback,
     ChapterListAdapter.Callback,
@@ -111,7 +108,7 @@ class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapt
             when {
             when {
                 searchKey.isNullOrBlank() -> appDb.bookChapterDao.flowByBook(viewModel.bookUrl)
                 searchKey.isNullOrBlank() -> appDb.bookChapterDao.flowByBook(viewModel.bookUrl)
                 else -> appDb.bookChapterDao.flowSearch(viewModel.bookUrl, searchKey)
                 else -> appDb.bookChapterDao.flowSearch(viewModel.bookUrl, searchKey)
-            }.collectLatest {
+            }.conflate().collect {
                 if (!(searchKey.isNullOrBlank() && it.isEmpty())) {
                 if (!(searchKey.isNullOrBlank() && it.isEmpty())) {
                     adapter.setItems(it, adapter.diffCallBack)
                     adapter.setItems(it, adapter.diffCallBack)
                     adapter.upDisplayTile()
                     adapter.upDisplayTile()
@@ -119,6 +116,7 @@ class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapt
                         mLayoutManager.scrollToPositionWithOffset(durChapterIndex, 0)
                         mLayoutManager.scrollToPositionWithOffset(durChapterIndex, 0)
                     }
                     }
                 }
                 }
+                delay(100)
             }
             }
         }
         }
     }
     }

+ 3 - 2
app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt

@@ -24,8 +24,8 @@ import io.legado.app.ui.main.MainViewModel
 import io.legado.app.utils.*
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.catch
-import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
@@ -121,9 +121,10 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
                 }
                 }
             }.catch {
             }.catch {
                 AppLog.put("书架更新出错", it)
                 AppLog.put("书架更新出错", it)
-            }.collectLatest { list ->
+            }.collect { list ->
                 binding.tvEmptyMsg.isGone = list.isNotEmpty()
                 binding.tvEmptyMsg.isGone = list.isNotEmpty()
                 booksAdapter.setItems(list)
                 booksAdapter.setItems(list)
+                delay(100)
             }
             }
         }
         }
     }
     }

+ 3 - 2
app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt

@@ -26,8 +26,8 @@ import io.legado.app.ui.main.bookshelf.BaseBookshelfFragment
 import io.legado.app.utils.*
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.catch
-import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
@@ -140,10 +140,11 @@ class BookshelfFragment2 : BaseBookshelfFragment(R.layout.fragment_bookshelf1),
                 }
                 }
             }.catch {
             }.catch {
                 AppLog.put("书架更新出错", it)
                 AppLog.put("书架更新出错", it)
-            }.collectLatest { list ->
+            }.collect { list ->
                 books = list
                 books = list
                 booksAdapter.notifyDataSetChanged()
                 booksAdapter.notifyDataSetChanged()
                 binding.tvEmptyMsg.isGone = getItemCount() > 0
                 binding.tvEmptyMsg.isGone = getItemCount() > 0
+                delay(100)
             }
             }
         }
         }
     }
     }

+ 5 - 3
app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt

@@ -38,8 +38,9 @@ import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.utils.*
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.catch
-import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
 
 
 /**
 /**
@@ -193,14 +194,15 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
                 else -> {
                 else -> {
                     appDb.replaceRuleDao.flowSearch("%$searchKey%")
                     appDb.replaceRuleDao.flowSearch("%$searchKey%")
                 }
                 }
-            }.catch {
+            }.conflate().catch {
                 AppLog.put("替换规则管理界面更新数据出错", it)
                 AppLog.put("替换规则管理界面更新数据出错", it)
-            }.collectLatest {
+            }.collect {
                 if (dataInit) {
                 if (dataInit) {
                     setResult(Activity.RESULT_OK)
                     setResult(Activity.RESULT_OK)
                 }
                 }
                 adapter.setItems(it, adapter.diffItemCallBack)
                 adapter.setItems(it, adapter.diffItemCallBack)
                 dataInit = true
                 dataInit = true
+                delay(100)
             }
             }
         }
         }
     }
     }

+ 5 - 3
app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt

@@ -33,8 +33,9 @@ import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.utils.*
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.catch
-import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
 
 
 /**
 /**
@@ -246,10 +247,11 @@ class RssSourceActivity : VMBaseActivity<ActivityRssSourceBinding, RssSourceView
                 else -> {
                 else -> {
                     appDb.rssSourceDao.flowSearch("%$searchKey%")
                     appDb.rssSourceDao.flowSearch("%$searchKey%")
                 }
                 }
-            }.catch {
+            }.conflate().catch {
                 AppLog.put("订阅源管理界面更新数据出错", it)
                 AppLog.put("订阅源管理界面更新数据出错", it)
-            }.collectLatest {
+            }.collect {
                 adapter.setItems(it, adapter.diffItemCallback)
                 adapter.setItems(it, adapter.diffItemCallback)
+                delay(100)
             }
             }
         }
         }
     }
     }