diff --git a/app/src/main/java/io/legado/app/data/dao/BookDao.kt b/app/src/main/java/io/legado/app/data/dao/BookDao.kt index 3f3eac3ed..87316b9d9 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookDao.kt @@ -10,7 +10,9 @@ import io.legado.app.constant.BookType import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookGroup import io.legado.app.data.entities.BookSource +import io.legado.app.help.book.isNotShelf import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map @Dao interface BookDao { @@ -25,6 +27,8 @@ interface BookDao { BookGroup.IdLocalNone -> flowLocalNoGroup() BookGroup.IdError -> flowUpdateError() else -> flowByUserGroup(groupId) + }.map { list -> + list.filterNot { it.isNotShelf } } } 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 47b2d018d..bfc0c5845 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 @@ -10,6 +10,7 @@ import io.legado.app.constant.AppLog import io.legado.app.data.appDb import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.SearchBook +import io.legado.app.help.book.isNotShelf import io.legado.app.model.webBook.WebBook import io.legado.app.utils.printOnDebug import io.legado.app.utils.stackTraceStr @@ -29,15 +30,17 @@ class ExploreShowViewModel(application: Application) : BaseViewModel(application private var bookSource: BookSource? = null private var exploreUrl: String? = null private var page = 1 + private var books = arrayListOf() init { execute { appDb.bookDao.flowAll().mapLatest { books -> val keys = arrayListOf() - books.forEach { - keys.add("${it.name}-${it.author}") - keys.add(it.name) - } + books.filterNot { it.isNotShelf } + .forEach { + keys.add("${it.name}-${it.author}") + keys.add(it.name) + } keys }.catch { AppLog.put("发现列表界面获取书籍数据失败\n${it.localizedMessage}", it) @@ -69,7 +72,8 @@ class ExploreShowViewModel(application: Application) : BaseViewModel(application WebBook.exploreBook(viewModelScope, source, url, page) .timeout(if (BuildConfig.DEBUG) 0L else 30000L) .onSuccess(IO) { searchBooks -> - booksData.postValue(searchBooks) + books.addAll(searchBooks) + booksData.postValue(books) appDb.searchBookDao.insert(*searchBooks.toTypedArray()) page++ }.onError { 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 76a1c33c9..16bef16d3 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 @@ -10,6 +10,7 @@ import io.legado.app.constant.AppLog import io.legado.app.data.appDb import io.legado.app.data.entities.SearchBook import io.legado.app.data.entities.SearchKeyword +import io.legado.app.help.book.isNotShelf import io.legado.app.help.config.AppConfig import io.legado.app.model.webBook.SearchModel import io.legado.app.utils.ConflateLiveData @@ -62,10 +63,11 @@ class SearchViewModel(application: Application) : BaseViewModel(application) { execute { appDb.bookDao.flowAll().mapLatest { books -> val keys = arrayListOf() - books.forEach { - keys.add("${it.name}-${it.author}") - keys.add(it.name) - } + books.filterNot { it.isNotShelf } + .forEach { + keys.add("${it.name}-${it.author}") + keys.add(it.name) + } keys }.catch { AppLog.put("搜索界面获取书籍列表失败\n${it.localizedMessage}", it)