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