mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -2,6 +2,7 @@ package io.legado.app.data.dao
|
||||
|
||||
import androidx.room.*
|
||||
import io.legado.app.constant.BookType
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookGroup
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
@@ -9,6 +10,19 @@ import kotlinx.coroutines.flow.Flow
|
||||
@Dao
|
||||
interface BookDao {
|
||||
|
||||
fun flowByGroup(groupId: Long): Flow<List<Book>> {
|
||||
return when (groupId) {
|
||||
BookGroup.IdRoot -> appDb.bookDao.flowRoot()
|
||||
BookGroup.IdAll -> appDb.bookDao.flowAll()
|
||||
BookGroup.IdLocal -> appDb.bookDao.flowLocal()
|
||||
BookGroup.IdAudio -> appDb.bookDao.flowAudio()
|
||||
BookGroup.IdNetNone -> appDb.bookDao.flowNetNoGroup()
|
||||
BookGroup.IdLocalNone -> appDb.bookDao.flowLocalNoGroup()
|
||||
BookGroup.IdError -> appDb.bookDao.flowUpdateError()
|
||||
else -> appDb.bookDao.flowByUserGroup(groupId)
|
||||
}
|
||||
}
|
||||
|
||||
@Query(
|
||||
"""
|
||||
select * from books where type & ${BookType.text} > 0
|
||||
@@ -45,7 +59,7 @@ interface BookDao {
|
||||
fun flowLocalNoGroup(): Flow<List<Book>>
|
||||
|
||||
@Query("SELECT * FROM books WHERE (`group` & :group) > 0")
|
||||
fun flowByGroup(group: Long): Flow<List<Book>>
|
||||
fun flowByUserGroup(group: Long): Flow<List<Book>>
|
||||
|
||||
@Query("SELECT * FROM books WHERE name like '%'||:key||'%' or author like '%'||:key||'%'")
|
||||
fun flowSearch(key: String): Flow<List<Book>>
|
||||
|
||||
@@ -6,9 +6,7 @@ import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import io.legado.app.R
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@Parcelize
|
||||
@@ -35,20 +33,6 @@ data class BookGroup(
|
||||
const val IdNetNone = -4L
|
||||
const val IdLocalNone = -5L
|
||||
const val IdError = -11L
|
||||
|
||||
fun flowBook(groupId: Long): Flow<List<Book>> {
|
||||
return when (groupId) {
|
||||
IdRoot -> appDb.bookDao.flowRoot()
|
||||
IdAll -> appDb.bookDao.flowAll()
|
||||
IdLocal -> appDb.bookDao.flowLocal()
|
||||
IdAudio -> appDb.bookDao.flowAudio()
|
||||
IdNetNone -> appDb.bookDao.flowNetNoGroup()
|
||||
IdLocalNone -> appDb.bookDao.flowLocalNoGroup()
|
||||
IdError -> appDb.bookDao.flowUpdateError()
|
||||
else -> appDb.bookDao.flowByGroup(groupId)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun getManageName(context: Context): String {
|
||||
|
||||
@@ -186,7 +186,7 @@ class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>()
|
||||
private fun initBookData() {
|
||||
booksFlowJob?.cancel()
|
||||
booksFlowJob = launch {
|
||||
BookGroup.flowBook(groupId).conflate().map { books ->
|
||||
appDb.bookDao.flowByGroup(groupId).conflate().map { books ->
|
||||
val booksDownload = books.filter {
|
||||
!it.isAudio
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ class BookshelfManageActivity :
|
||||
booksFlowJob?.cancel()
|
||||
booksFlowJob = launch {
|
||||
val bookSort = AppConfig.getBookSortByGroupId(viewModel.groupId)
|
||||
BookGroup.flowBook(viewModel.groupId).conflate().map { list ->
|
||||
appDb.bookDao.flowByGroup(viewModel.groupId).conflate().map { list ->
|
||||
when (bookSort) {
|
||||
1 -> list.sortedByDescending {
|
||||
it.latestChapterTime
|
||||
|
||||
@@ -13,6 +13,7 @@ import io.legado.app.base.BaseFragment
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.constant.EventBus
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookGroup
|
||||
import io.legado.app.databinding.FragmentBooksBinding
|
||||
@@ -133,7 +134,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
|
||||
private fun upRecyclerData() {
|
||||
booksFlowJob?.cancel()
|
||||
booksFlowJob = launch {
|
||||
BookGroup.flowBook(groupId).conflate().map { list ->
|
||||
appDb.bookDao.flowByGroup(groupId).conflate().map { list ->
|
||||
//排序
|
||||
when (bookSort) {
|
||||
1 -> list.sortedByDescending { it.latestChapterTime }
|
||||
|
||||
@@ -12,6 +12,7 @@ import io.legado.app.R
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.constant.EventBus
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookGroup
|
||||
import io.legado.app.databinding.FragmentBookshelf2Binding
|
||||
@@ -133,7 +134,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
|
||||
}
|
||||
booksFlowJob?.cancel()
|
||||
booksFlowJob = launch {
|
||||
BookGroup.flowBook(groupId).conflate().map { list ->
|
||||
appDb.bookDao.flowByGroup(groupId).conflate().map { list ->
|
||||
//排序
|
||||
when (AppConfig.getBookSortByGroupId(groupId)) {
|
||||
1 -> list.sortedByDescending {
|
||||
|
||||
Reference in New Issue
Block a user