kunfei 3 лет назад
Родитель
Сommit
e8f1b3a4c6

+ 15 - 1
app/src/main/java/io/legado/app/data/dao/BookDao.kt

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

+ 0 - 16
app/src/main/java/io/legado/app/data/entities/BookGroup.kt

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

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt

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

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt

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

+ 2 - 1
app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt

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

+ 2 - 1
app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt

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