kunfei 3 лет назад
Родитель
Сommit
c59d8a1f6e

+ 0 - 14
app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt

@@ -17,7 +17,6 @@ import androidx.recyclerview.widget.RecyclerView
 import com.google.android.flexbox.FlexboxLayoutManager
 import io.legado.app.R
 import io.legado.app.base.VMBaseActivity
-import io.legado.app.constant.AppLog
 import io.legado.app.constant.PreferKey
 import io.legado.app.data.appDb
 import io.legado.app.data.entities.Book
@@ -33,9 +32,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.delay
-import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.conflate
-import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
 import splitties.init.appCtx
@@ -291,17 +288,6 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
                 groups = it
             }
         }
-        launch {
-            appDb.bookDao.flowAll().conflate().map { books ->
-                books.map { "${it.name}-${it.author}" }
-            }.catch { e ->
-                AppLog.put("加载书架数据失败", e)
-            }.collect {
-                viewModel.bookshelf.clear()
-                viewModel.bookshelf.addAll(it)
-                viewModel.upAdapterLiveData.postValue("isInBookshelf")
-            }
-        }
     }
 
     /**

+ 16 - 0
app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt

@@ -10,10 +10,13 @@ import io.legado.app.data.entities.SearchKeyword
 import io.legado.app.help.config.AppConfig
 import io.legado.app.model.webBook.SearchModel
 import kotlinx.coroutines.Dispatchers.IO
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.channels.awaitClose
 import kotlinx.coroutines.flow.callbackFlow
 import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.mapLatest
 
+@OptIn(ExperimentalCoroutinesApi::class)
 class SearchViewModel(application: Application) : BaseViewModel(application) {
     val bookshelf = hashSetOf<String>()
     val upAdapterLiveData = MutableLiveData<String>()
@@ -57,6 +60,19 @@ class SearchViewModel(application: Application) : BaseViewModel(application) {
         }
     }.flowOn(IO)
 
+
+    init {
+        execute {
+            appDb.bookDao.flowAll().mapLatest { books ->
+                books.map { "${it.name}-${it.author}" }
+            }.collect {
+                bookshelf.clear()
+                bookshelf.addAll(it)
+                upAdapterLiveData.postValue("isInBookshelf")
+            }
+        }
+    }
+
     /**
      * 开始搜索
      */