diff --git a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowViewModel.kt b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowViewModel.kt index cdaa0165e..734f343db 100644 --- a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowViewModel.kt @@ -16,11 +16,12 @@ import io.legado.app.utils.stackTraceStr import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.mapLatest +import java.util.Collections @OptIn(ExperimentalCoroutinesApi::class) class ExploreShowViewModel(application: Application) : BaseViewModel(application) { - val bookshelf = hashSetOf() + val bookshelf: MutableSet = Collections.synchronizedSet(hashSetOf()) val upAdapterLiveData = MutableLiveData() val booksData = MutableLiveData>() val errorLiveData = MutableLiveData() @@ -74,7 +75,7 @@ class ExploreShowViewModel(application: Application) : BaseViewModel(application val url = exploreUrl if (source == null || url == null) return emptyList() val searchBooks = arrayListOf() - for (page in start .. end) { + for (page in start..end) { val books = WebBook.exploreBookAwait(source, url, page) if (books.isEmpty()) break searchBooks.addAll(books) diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt index 390a5c74c..80609f2ad 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt @@ -16,11 +16,12 @@ import io.legado.app.utils.ConflateLiveData import io.legado.app.utils.toastOnUi import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.mapLatest +import java.util.Collections @OptIn(ExperimentalCoroutinesApi::class) class SearchViewModel(application: Application) : BaseViewModel(application) { val handler = Handler(Looper.getMainLooper()) - val bookshelf = hashSetOf() + val bookshelf: MutableSet = Collections.synchronizedSet(hashSetOf()) val upAdapterLiveData = MutableLiveData() var searchBookLiveData = ConflateLiveData>(1000) val searchScope: SearchScope = SearchScope(AppConfig.searchScope)