Horis 2 år sedan
förälder
incheckning
27f471a3f1

+ 4 - 0
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 }
         }
     }
 

+ 9 - 5
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<SearchBook>()
 
     init {
         execute {
             appDb.bookDao.flowAll().mapLatest { books ->
                 val keys = arrayListOf<String>()
-                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 {

+ 6 - 4
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<String>()
-                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)