From ee2acf8b98d3bdca58db12787e4a9878c817eb62 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sat, 14 Dec 2024 14:29:10 +0700 Subject: [PATCH] fix: Delete duplicate chapters --- .../kanade/tachiyomi/util/chapter/ChapterSourceSync.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt index bda3a024bd..66e73646a9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt @@ -107,12 +107,17 @@ suspend fun syncChaptersWithSource( it.chapter_number = ChapterRecognition.parseChapterNumber(it.name, manga.title, it.chapter_number) } - // Chapters from the db not in the source. - val toDelete = dbChapters.filterNot { dbChapter -> + val duplicates = dbChapters.groupBy { it.url } + .filter { it.value.size > 1 } + .flatMap { (_, chapters) -> + chapters.drop(1) + } + val notInSource = dbChapters.filterNot { dbChapter -> sourceChapters.any { sourceChapter -> dbChapter.url == sourceChapter.url } } + val toDelete = duplicates + notInSource // Return if there's nothing to add, delete or change, avoid unnecessary db transactions. if (toAdd.isEmpty() && toDelete.isEmpty() && toChange.isEmpty()) {