This commit is contained in:
Horis
2024-07-22 11:50:09 +08:00
parent ac9e0af6d4
commit be3823ce31
3 changed files with 19 additions and 9 deletions

View File

@@ -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 }
}
}

View File

@@ -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 {

View File

@@ -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)