diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt index 57c8480918..32e74f43df 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt +++ b/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, diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRemoveDuplicates.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRemoveDuplicates.kt new file mode 100644 index 0000000000..d6e026f8de --- /dev/null +++ b/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.removeDuplicates(currentChapter: Chapter): List { + return groupBy { it.chapterNumber } + .map { (_, chapters) -> + chapters.find { it.id == currentChapter.id } + ?: chapters.find { it.scanlator == currentChapter.scanlator } + ?: chapters.first() + } +}