From be3823ce3107a960ccb3b2900db248ffdbd188c3 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Mon, 22 Jul 2024 11:50:09 +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 --- .../main/java/io/legado/app/data/dao/BookDao.kt | 4 ++++ .../app/ui/book/explore/ExploreShowViewModel.kt | 14 +++++++++----- .../legado/app/ui/book/search/SearchViewModel.kt | 10 ++++++---- 3 files changed, 19 insertions(+), 9 deletions(-) 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)