瀏覽代碼

Avoid showing duplicate entry dialog for same entry

Fixes #9772
arkon 1 年之前
父節點
當前提交
fd30c0adcd

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt

@@ -321,7 +321,7 @@ class BrowseSourceScreenModel(
     }
 
     suspend fun getDuplicateLibraryManga(manga: Manga): Manga? {
-        return getDuplicateLibraryManga.await(manga.title)
+        return getDuplicateLibraryManga.await(manga).getOrNull(0)
     }
 
     private fun moveMangaToCategories(manga: Manga, vararg categories: Category) {

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt

@@ -284,7 +284,7 @@ class MangaScreenModel(
                 // Add to library
                 // First, check if duplicate exists if callback is provided
                 if (checkDuplicate) {
-                    val duplicate = getDuplicateLibraryManga.await(manga.title)
+                    val duplicate = getDuplicateLibraryManga.await(manga).getOrNull(0)
 
                     if (duplicate != null) {
                         updateSuccessState { it.copy(dialog = Dialog.DuplicateManga(manga, duplicate)) }

+ 3 - 3
data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt

@@ -48,9 +48,9 @@ class MangaRepositoryImpl(
         return handler.subscribeToList { mangasQueries.getFavoriteBySourceId(sourceId, mangaMapper) }
     }
 
-    override suspend fun getDuplicateLibraryManga(title: String): Manga? {
-        return handler.awaitOneOrNull {
-            mangasQueries.getDuplicateLibraryManga(title, mangaMapper)
+    override suspend fun getDuplicateLibraryManga(id: Long, title: String): List<Manga> {
+        return handler.awaitList {
+            mangasQueries.getDuplicateLibraryManga(title, id, mangaMapper)
         }
     }
 

+ 1 - 1
data/src/main/sqldelight/tachiyomi/data/mangas.sq

@@ -92,7 +92,7 @@ SELECT *
 FROM mangas
 WHERE favorite = 1
 AND LOWER(title) = :title
-LIMIT 1;
+AND _id != :id;
 
 resetViewerFlags:
 UPDATE mangas

+ 2 - 2
domain/src/main/java/tachiyomi/domain/manga/interactor/GetDuplicateLibraryManga.kt

@@ -7,7 +7,7 @@ class GetDuplicateLibraryManga(
     private val mangaRepository: MangaRepository,
 ) {
 
-    suspend fun await(title: String): Manga? {
-        return mangaRepository.getDuplicateLibraryManga(title.lowercase())
+    suspend fun await(manga: Manga): List<Manga> {
+        return mangaRepository.getDuplicateLibraryManga(manga.id, manga.title.lowercase())
     }
 }

+ 1 - 1
domain/src/main/java/tachiyomi/domain/manga/repository/MangaRepository.kt

@@ -23,7 +23,7 @@ interface MangaRepository {
 
     fun getFavoritesBySourceId(sourceId: Long): Flow<List<Manga>>
 
-    suspend fun getDuplicateLibraryManga(title: String): Manga?
+    suspend fun getDuplicateLibraryManga(id: Long, title: String): List<Manga>
 
     suspend fun resetViewerFlags(): Boolean