diff --git a/app/src/main/java/io/legado/app/data/dao/BookDao.kt b/app/src/main/java/io/legado/app/data/dao/BookDao.kt index 3674c78f8..30ee3c0d6 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookDao.kt +++ b/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> { + 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> @Query("SELECT * FROM books WHERE (`group` & :group) > 0") - fun flowByGroup(group: Long): Flow> + fun flowByUserGroup(group: Long): Flow> @Query("SELECT * FROM books WHERE name like '%'||:key||'%' or author like '%'||:key||'%'") fun flowSearch(key: String): Flow> diff --git a/app/src/main/java/io/legado/app/data/entities/BookGroup.kt b/app/src/main/java/io/legado/app/data/entities/BookGroup.kt index a0e5f4418..f97974cbb 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookGroup.kt +++ b/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> { - 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 { diff --git a/app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt b/app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt index 31c0df546..4217e90eb 100644 --- a/app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt @@ -186,7 +186,7 @@ class CacheActivity : VMBaseActivity() 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 } diff --git a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt index 5960cec32..c344b52f0 100644 --- a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt +++ b/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 diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt index a0b64a1de..2bf0c537b 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt +++ b/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 } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt index fa82a1040..8e31b7ce0 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt +++ b/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 {