Ver código fonte

fix: skip duplicate chapters on download ahead if option to skip duplicates is enabled (#9334)

* fix: skip duplicate chapters on download ahead if option is enabled

* fix: Use a function to filter duplicates
Trace 1 ano atrás
pai
commit
4816b4b53a

+ 10 - 8
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt

@@ -35,6 +35,7 @@ import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
 import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
 import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
 import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
+import eu.kanade.tachiyomi.util.chapter.removeDuplicates
 import eu.kanade.tachiyomi.util.editCover
 import eu.kanade.tachiyomi.util.lang.byteSize
 import eu.kanade.tachiyomi.util.lang.takeBytes
@@ -175,12 +176,7 @@ class ReaderViewModel(
             else -> chapters
         }.run {
             if (readerPreferences.skipDupe().get()) {
-                groupBy { it.chapterNumber }
-                    .map { (_, chapters) ->
-                        chapters.find { it.id == selectedChapter.id }
-                            ?: chapters.find { it.scanlator == selectedChapter.scanlator }
-                            ?: chapters.first()
-                    }
+                removeDuplicates(selectedChapter)
             } else {
                 this
             }
@@ -456,8 +452,14 @@ class ReaderViewModel(
             )
             if (!isNextChapterDownloaded) return@launchIO
 
-            val chaptersToDownload = getNextChapters.await(manga.id, nextChapter.id!!)
-                .take(amount)
+            val chaptersToDownload = getNextChapters.await(manga.id, nextChapter.id!!).run {
+                if (readerPreferences.skipDupe().get()) {
+                    removeDuplicates(nextChapter.toDomainChapter()!!)
+                } else {
+                    this
+                }
+            }.take(amount)
+
             downloadManager.downloadChapters(
                 manga,
                 chaptersToDownload,

+ 15 - 0
app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRemoveDuplicates.kt

@@ -0,0 +1,15 @@
+package eu.kanade.tachiyomi.util.chapter
+
+import tachiyomi.domain.chapter.model.Chapter
+
+/**
+ * Returns a copy of the list with duplicate chapters removed
+ */
+fun List<Chapter>.removeDuplicates(currentChapter: Chapter): List<Chapter> {
+    return groupBy { it.chapterNumber }
+        .map { (_, chapters) ->
+            chapters.find { it.id == currentChapter.id }
+                ?: chapters.find { it.scanlator == currentChapter.scanlator }
+                ?: chapters.first()
+        }
+}