This commit is contained in:
kunfei
2023-07-30 19:48:21 +08:00
parent da27d41d5d
commit b7fcdb661e
6 changed files with 21 additions and 21 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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