From bcb05c4b3ae9e858df4998f254a012e7c9570767 Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Fri, 25 Oct 2024 01:55:48 +0700 Subject: [PATCH] Fix sync progress from tracker not working if chapters' order is messed up after backup restoration --- .../interactor/SyncChapterProgressWithTrack.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/kanade/domain/track/interactor/SyncChapterProgressWithTrack.kt b/app/src/main/java/eu/kanade/domain/track/interactor/SyncChapterProgressWithTrack.kt index 8f3149ffd..6a060c06f 100644 --- a/app/src/main/java/eu/kanade/domain/track/interactor/SyncChapterProgressWithTrack.kt +++ b/app/src/main/java/eu/kanade/domain/track/interactor/SyncChapterProgressWithTrack.kt @@ -32,10 +32,10 @@ class SyncChapterProgressWithTrack( // } // <-- KKM - // Current chapters in database + // Current chapters in database, sort by source's order because database's order is a mess val dbChapters = getChaptersByMangaId.await(mangaId) // KMK --> - .reversed() + .sortedByDescending { it.sourceOrder } // KMK <-- .filter { it.isRecognizedNumber } @@ -43,10 +43,15 @@ class SyncChapterProgressWithTrack( .sortedBy { it.chapterNumber } // KMK --> - // Chapters to update to follow tracker: only continuous incremental chapters - // any abnormal chapter number will stop it from updating read status further var lastCheckChapter: Double var checkingChapter = 0.0 + + /** + * Chapters to update to follow tracker: only continuous incremental chapters + * any abnormal chapter number will stop it from updating read status further. + * Some mangas has name such as Volume 2 Chapter 1 which will corrupt the order + * if we sort by chapterNumber. + */ val chapterUpdates = dbChapters .takeWhile { chapter -> lastCheckChapter = checkingChapter