From db36896f9253497b9a5ac009a35621e3b8da839a Mon Sep 17 00:00:00 2001 From: Mitchell Syer Date: Sun, 5 Nov 2023 10:52:10 -0500 Subject: [PATCH] Fix chapter duplicates if its a different url but same chapter list size (#759) --- .../suwayomi/tachidesk/manga/impl/Chapter.kt | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt index 13241a78..d67138f1 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt @@ -45,7 +45,6 @@ import suwayomi.tachidesk.manga.model.table.MangaTable import suwayomi.tachidesk.manga.model.table.PageTable import suwayomi.tachidesk.manga.model.table.toDataClass import suwayomi.tachidesk.server.serverConfig -import java.lang.Long import java.time.Instant import java.util.TreeSet import java.util.concurrent.TimeUnit @@ -202,27 +201,27 @@ object Chapter { val deletedReadChapterNumbers = TreeSet() val deletedBookmarkedChapterNumbers = TreeSet() val deletedDownloadedChapterNumbers = TreeSet() - val deletedChapterNumberDateFetchMap = mutableMapOf() + val deletedChapterNumberDateFetchMap = mutableMapOf() // clear any orphaned/duplicate chapters that are in the db but not in `chapterList` - val dbChapterCount = chaptersInDb.count() - if (dbChapterCount > chapterList.size) { // we got some clean up due - val chapterUrls = chapterList.map { it.url }.toSet() + val chapterUrls = chapterList.map { it.url }.toSet() - val chaptersIdsToDelete = - chaptersInDb.mapNotNull { dbChapter -> - if (!chapterUrls.contains(dbChapter.url)) { - if (dbChapter.read) deletedReadChapterNumbers.add(dbChapter.chapterNumber) - if (dbChapter.bookmarked) deletedBookmarkedChapterNumbers.add(dbChapter.chapterNumber) - if (dbChapter.downloaded) deletedDownloadedChapterNumbers.add(dbChapter.chapterNumber) - deletedChapterNumbers.add(dbChapter.chapterNumber) - deletedChapterNumberDateFetchMap[dbChapter.chapterNumber] = dbChapter.fetchedAt - dbChapter.id - } else { - null - } + val chaptersIdsToDelete = + chaptersInDb.mapNotNull { dbChapter -> + if (!chapterUrls.contains(dbChapter.url)) { + if (dbChapter.read) deletedReadChapterNumbers.add(dbChapter.chapterNumber) + if (dbChapter.bookmarked) deletedBookmarkedChapterNumbers.add(dbChapter.chapterNumber) + if (dbChapter.downloaded) deletedDownloadedChapterNumbers.add(dbChapter.chapterNumber) + deletedChapterNumbers.add(dbChapter.chapterNumber) + deletedChapterNumberDateFetchMap[dbChapter.chapterNumber] = dbChapter.fetchedAt + dbChapter.id + } else { + null } + } + // we got some clean up due + if (chaptersIdsToDelete.isNotEmpty()) { transaction { PageTable.deleteWhere { PageTable.chapter inList chaptersIdsToDelete } ChapterTable.deleteWhere { ChapterTable.id inList chaptersIdsToDelete }