From 9972fa1053d19191871e52d48a9fd56b22fbc708 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Mon, 31 Mar 2025 11:09:35 +0600 Subject: [PATCH] Fix mark existing duplicate read chapters as read option not working in some cases (#1944) (cherry picked from commit 8a21148578af3c1538e9ab2b1fe5bdf05b4e35c9) # Conflicts: # CHANGELOG.md # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt --- .../tachiyomi/ui/reader/ReaderViewModel.kt | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) 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 3bbdc63b9..0b1ce278d 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 @@ -19,7 +19,6 @@ import eu.kanade.domain.sync.SyncPreferences import eu.kanade.domain.track.interactor.TrackChapter import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.domain.ui.UiPreferences -import eu.kanade.tachiyomi.data.database.models.isRecognizedNumber import eu.kanade.tachiyomi.data.database.models.toDomainChapter import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadProvider @@ -184,6 +183,11 @@ class ReaderViewModel @JvmOverloads constructor( private var chapterToDownload: Download? = null + private val unfilteredChapterList by lazy { + val manga = manga!! + runBlocking { getChaptersByMangaId.await(manga.id, applyScanlatorFilter = false) } + } + /** * Chapter list for the active manga. It's retrieved lazily and should be accessed for the first * time in a background thread to avoid blocking the UI. @@ -732,11 +736,11 @@ class ReaderViewModel @JvmOverloads constructor( // SY --> if (manga?.isEhBasedManga() == true) { viewModelScope.launchNonCancellable { - val chapterUpdates = chapterList - .filter { it.chapter.source_order > readerChapter.chapter.source_order } + val chapterUpdates = unfilteredChapterList + .filter { it.sourceOrder > readerChapter.chapter.source_order } .map { chapter -> ChapterUpdate( - id = chapter.chapter.id!!, + id = chapter.id, read = true, ) } @@ -752,15 +756,14 @@ class ReaderViewModel @JvmOverloads constructor( .contains(LibraryPreferences.MARK_DUPLICATE_CHAPTER_READ_EXISTING) if (!markDuplicateAsRead) return - val duplicateUnreadChapters = chapterList - .mapNotNull { - val chapter = it.chapter + val duplicateUnreadChapters = unfilteredChapterList + .mapNotNull { chapter -> if ( !chapter.read && chapter.isRecognizedNumber && - chapter.chapter_number == readerChapter.chapter.chapter_number + chapter.chapterNumber.toFloat() == readerChapter.chapter.chapter_number ) { - ChapterUpdate(id = chapter.id!!, read = true) + ChapterUpdate(id = chapter.id, read = true) // SY --> .also { deleteChapterIfNeeded(ReaderChapter(chapter)) } // SY <--