Просмотр исходного кода

refactor: 清零 ChangeCoverViewModel DAO 直连

5151561 3 месяцев назад
Родитель
Сommit
c582e69267

+ 6 - 0
app/src/main/java/io/legado/app/data/repository/SearchRepository.kt

@@ -26,6 +26,7 @@ interface SearchRepository {
     suspend fun saveSearchKeyword(keyword: String)
     suspend fun deleteSearchKeyword(item: SearchKeyword)
     suspend fun clearSearchKeywords()
+    suspend fun getEnableHasCover(name: String, author: String): List<SearchBook>
     suspend fun saveSearchBooks(books: List<SearchBook>)
     suspend fun saveSearchBook(book: SearchBook)
     suspend fun updateSearchBook(book: SearchBook)
@@ -116,6 +117,11 @@ class SearchRepositoryImpl(
         appDb.bookSourceDao.getBookSource(sourceUrl)
     }
 
+    override suspend fun getEnableHasCover(name: String, author: String): List<SearchBook> =
+        withContext(Dispatchers.IO) {
+            appDb.searchBookDao.getEnableHasCover(name, author)
+        }
+
     override suspend fun saveSearchBooks(books: List<SearchBook>): Unit =
         withContext(Dispatchers.IO) {
         if (books.isNotEmpty()) {

+ 2 - 2
app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverDialog.kt

@@ -6,7 +6,7 @@ import android.view.MenuItem
 import android.view.View
 import androidx.appcompat.widget.Toolbar
 import androidx.core.view.isVisible
-import androidx.fragment.app.viewModels
+import org.koin.androidx.viewmodel.ext.android.viewModel
 import androidx.lifecycle.Lifecycle.State.STARTED
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.repeatOnLifecycle
@@ -36,7 +36,7 @@ class ChangeCoverDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_change
 
     private val binding by viewBinding(DialogChangeCoverBinding::bind)
     private val callBack: CallBack? get() = activity as? CallBack
-    private val viewModel: ChangeCoverViewModel by viewModels()
+    private val viewModel: ChangeCoverViewModel by viewModel()
     private val adapter by lazy { CoverAdapter(requireContext(), this) }
 
     private val startStopMenuItem: MenuItem?

+ 10 - 5
app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt

@@ -7,10 +7,11 @@ import androidx.lifecycle.viewModelScope
 import io.legado.app.base.BaseViewModel
 import io.legado.app.constant.AppLog
 import io.legado.app.constant.AppPattern
-import io.legado.app.data.appDb
 import io.legado.app.data.entities.BookSource
 import io.legado.app.data.entities.BookSourcePart
 import io.legado.app.data.entities.SearchBook
+import io.legado.app.data.repository.BookSourceRepository
+import io.legado.app.data.repository.SearchRepository
 import io.legado.app.model.webBook.WebBook
 import io.legado.app.ui.config.otherConfig.OtherConfig
 import io.legado.app.utils.mapParallelSafe
@@ -33,7 +34,11 @@ import kotlinx.coroutines.withTimeout
 import java.util.Collections
 import java.util.concurrent.Executors
 
-class ChangeCoverViewModel(application: Application) : BaseViewModel(application) {
+class ChangeCoverViewModel(
+    application: Application,
+    private val searchRepository: SearchRepository,
+    private val bookSourceRepository: BookSourceRepository,
+) : BaseViewModel(application) {
     private val threadCount = OtherConfig.threadCount
     private var searchPool: ExecutorCoroutineDispatcher? = null
     private var searchSuccess: ((SearchBook) -> Unit)? = null
@@ -69,7 +74,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
             trySend(defaultCover + searchBooks.sortedBy { it.originOrder })
         }
 
-        appDb.searchBookDao.getEnableHasCover(name, author).let {
+        searchRepository.getEnableHasCover(name, author).let {
             searchBooks.addAll(it)
             trySend(defaultCover + searchBooks.toList())
         }
@@ -112,7 +117,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
             searchBooks.clear()
             upAdapter?.invoke()
             bookSourceParts.clear()
-            bookSourceParts.addAll(appDb.bookSourceDao.allEnabledPart)
+            bookSourceParts.addAll(bookSourceRepository.getAllEnabledPart())
             initSearchPool()
             search()
         }
@@ -152,7 +157,7 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application
         if (searchBook.name == name && searchBook.author == author
             && !searchBook.coverUrl.isNullOrEmpty()
         ) {
-            appDb.searchBookDao.insert(searchBook)
+            searchRepository.saveSearchBook(searchBook)
             searchSuccess?.invoke(searchBook)
         }
     }

+ 0 - 1
build.gradle.kts

@@ -220,7 +220,6 @@ val verifyConfigArchitecture = tasks.register<VerifyConfigArchitectureTask>(
     legacyDaoInjectionBaseline.set(
         mapOf(
             "io/legado/app/ui/book/audio/AudioPlayViewModel.kt" to 11,
-            "io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt" to 3,
             "io/legado/app/ui/book/info/BookInfoViewModel.kt" to 34,
             "io/legado/app/ui/book/manga/ReadMangaViewModel.kt" to 17,
             "io/legado/app/ui/book/read/ReadBookViewModel.kt" to 52,