Horis 3 yıl önce
ebeveyn
işleme
648ad26003

+ 0 - 1
app/src/main/java/io/legado/app/model/webBook/SearchModel.kt

@@ -91,7 +91,6 @@ class SearchModel(private val scope: CoroutineScope, private val callBack: CallB
                 onSuccess(searchId, it)
                 onSuccess(searchId, it)
             }
             }
             .onFinally {
             .onFinally {
-                ensureActive()
                 onFinally(searchId)
                 onFinally(searchId)
             }
             }
         tasks.add(task)
         tasks.add(task)

+ 3 - 1
app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkActivity.kt

@@ -13,6 +13,8 @@ import io.legado.app.databinding.ActivityAllBookmarkBinding
 import io.legado.app.ui.file.HandleFileContract
 import io.legado.app.ui.file.HandleFileContract
 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.Dispatchers.IO
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
 
 
 class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookmarkViewModel>(),
 class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookmarkViewModel>(),
@@ -35,7 +37,7 @@ class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookma
     override fun onActivityCreated(savedInstanceState: Bundle?) {
     override fun onActivityCreated(savedInstanceState: Bundle?) {
         initView()
         initView()
         lifecycleScope.launch {
         lifecycleScope.launch {
-            appDb.bookmarkDao.flowAll().collect {
+            appDb.bookmarkDao.flowAll().flowOn(IO).collect {
                 adapter.setItems(it)
                 adapter.setItems(it)
             }
             }
         }
         }

+ 18 - 4
app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt

@@ -28,6 +28,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
     private var searchPool: ExecutorCoroutineDispatcher? = null
     private var searchPool: ExecutorCoroutineDispatcher? = null
     private val tasks = CompositeCoroutine()
     private val tasks = CompositeCoroutine()
     private var searchSuccess: ((SearchBook) -> Unit)? = null
     private var searchSuccess: ((SearchBook) -> Unit)? = null
+    private var upAdapter: (() -> Unit)? = null
     private var bookSourceList = arrayListOf<BookSource>()
     private var bookSourceList = arrayListOf<BookSource>()
     private val defaultCover by lazy {
     private val defaultCover by lazy {
         listOf(
         listOf(
@@ -42,8 +43,8 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
     val searchStateData = MutableLiveData<Boolean>()
     val searchStateData = MutableLiveData<Boolean>()
     var name: String = ""
     var name: String = ""
     var author: String = ""
     var author: String = ""
-    val dataFlow = callbackFlow<List<SearchBook>> {
-        val searchBooks = Collections.synchronizedList(arrayListOf<SearchBook>())
+    val searchBooks: MutableList<SearchBook> = Collections.synchronizedList(arrayListOf())
+    val dataFlow = callbackFlow {
 
 
         searchSuccess = { searchBook ->
         searchSuccess = { searchBook ->
             if (!searchBooks.contains(searchBook)) {
             if (!searchBooks.contains(searchBook)) {
@@ -52,6 +53,10 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
             }
             }
         }
         }
 
 
+        upAdapter = {
+            trySend(defaultCover + searchBooks.sortedBy { it.originOrder })
+        }
+
         appDb.searchBookDao.getEnableHasCover(name, author).let {
         appDb.searchBookDao.getEnableHasCover(name, author).let {
             searchBooks.addAll(it)
             searchBooks.addAll(it)
             trySend(defaultCover + searchBooks.toList())
             trySend(defaultCover + searchBooks.toList())
@@ -64,6 +69,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
         awaitClose {
         awaitClose {
             searchBooks.clear()
             searchBooks.clear()
             searchSuccess = null
             searchSuccess = null
+            upAdapter = null
         }
         }
     }.flowOn(IO)
     }.flowOn(IO)
 
 
@@ -90,6 +96,8 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
     private fun startSearch() {
     private fun startSearch() {
         execute {
         execute {
             stopSearch()
             stopSearch()
+            searchBooks.clear()
+            upAdapter?.invoke()
             bookSourceList.clear()
             bookSourceList.clear()
             bookSourceList.addAll(appDb.bookSourceDao.allEnabled)
             bookSourceList.addAll(appDb.bookSourceDao.allEnabled)
             searchStateData.postValue(true)
             searchStateData.postValue(true)
@@ -112,7 +120,13 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
             return
             return
         }
         }
         val task = WebBook
         val task = WebBook
-            .searchBook(viewModelScope, source, name, context = searchPool!!)
+            .searchBook(
+                viewModelScope,
+                source,
+                name,
+                context = searchPool!!,
+                executeContext = searchPool!!
+            )
             .timeout(60000L)
             .timeout(60000L)
             .onSuccess(IO) {
             .onSuccess(IO) {
                 it.firstOrNull()?.let { searchBook ->
                 it.firstOrNull()?.let { searchBook ->
@@ -124,7 +138,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
                     }
                     }
                 }
                 }
             }
             }
-            .onFinally(searchPool) {
+            .onFinally {
                 searchNext()
                 searchNext()
             }
             }
         tasks.add(task)
         tasks.add(task)