优化
This commit is contained in:
@@ -91,7 +91,6 @@ class SearchModel(private val scope: CoroutineScope, private val callBack: CallB
|
||||
onSuccess(searchId, it)
|
||||
}
|
||||
.onFinally {
|
||||
ensureActive()
|
||||
onFinally(searchId)
|
||||
}
|
||||
tasks.add(task)
|
||||
|
||||
@@ -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<ActivityAllBookmarkBinding, AllBookmarkViewModel>(),
|
||||
@@ -35,7 +37,7 @@ class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookma
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
initView()
|
||||
lifecycleScope.launch {
|
||||
appDb.bookmarkDao.flowAll().collect {
|
||||
appDb.bookmarkDao.flowAll().flowOn(IO).collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
|
||||
private var searchPool: ExecutorCoroutineDispatcher? = null
|
||||
private val tasks = CompositeCoroutine()
|
||||
private var searchSuccess: ((SearchBook) -> Unit)? = null
|
||||
private var upAdapter: (() -> Unit)? = null
|
||||
private var bookSourceList = arrayListOf<BookSource>()
|
||||
private val defaultCover by lazy {
|
||||
listOf(
|
||||
@@ -42,8 +43,8 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
|
||||
val searchStateData = MutableLiveData<Boolean>()
|
||||
var name: 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 ->
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user