mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user