From 9b45ce05e2c33a8fff8a7c4d992c7dda1566c46c Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Mon, 11 Sep 2023 16:16:55 +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 --- .../legado/app/model/webBook/SearchModel.kt | 1 - .../ui/book/bookmark/AllBookmarkActivity.kt | 4 +++- .../book/changecover/ChangeCoverViewModel.kt | 22 +++++++++++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/webBook/SearchModel.kt b/app/src/main/java/io/legado/app/model/webBook/SearchModel.kt index 8d1375523..1ac0e0c06 100644 --- a/app/src/main/java/io/legado/app/model/webBook/SearchModel.kt +++ b/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) } .onFinally { - ensureActive() onFinally(searchId) } tasks.add(task) diff --git a/app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkActivity.kt b/app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkActivity.kt index d54c17706..5f4883d30 100644 --- a/app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkActivity.kt +++ b/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.utils.showDialogFragment import io.legado.app.utils.viewbindingdelegate.viewBinding +import kotlinx.coroutines.Dispatchers.IO +import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.launch class AllBookmarkActivity : VMBaseActivity(), @@ -35,7 +37,7 @@ class AllBookmarkActivity : VMBaseActivity Unit)? = null + private var upAdapter: (() -> Unit)? = null private var bookSourceList = arrayListOf() private val defaultCover by lazy { listOf( @@ -42,8 +43,8 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application val searchStateData = MutableLiveData() var name: String = "" var author: String = "" - val dataFlow = callbackFlow> { - val searchBooks = Collections.synchronizedList(arrayListOf()) + val searchBooks: MutableList = Collections.synchronizedList(arrayListOf()) + val dataFlow = callbackFlow { searchSuccess = { 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 { searchBooks.addAll(it) trySend(defaultCover + searchBooks.toList()) @@ -64,6 +69,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application awaitClose { searchBooks.clear() searchSuccess = null + upAdapter = null } }.flowOn(IO) @@ -90,6 +96,8 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application private fun startSearch() { execute { stopSearch() + searchBooks.clear() + upAdapter?.invoke() bookSourceList.clear() bookSourceList.addAll(appDb.bookSourceDao.allEnabled) searchStateData.postValue(true) @@ -112,7 +120,13 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application return } val task = WebBook - .searchBook(viewModelScope, source, name, context = searchPool!!) + .searchBook( + viewModelScope, + source, + name, + context = searchPool!!, + executeContext = searchPool!! + ) .timeout(60000L) .onSuccess(IO) { it.firstOrNull()?.let { searchBook -> @@ -124,7 +138,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application } } } - .onFinally(searchPool) { + .onFinally { searchNext() } tasks.add(task)