From 1eb64d117eb047eab93ba96a87b921bd5bc37ad3 Mon Sep 17 00:00:00 2001 From: Roshan Varughese <40583749+Animeboynz@users.noreply.github.com> Date: Thu, 6 Mar 2025 21:00:01 +1300 Subject: [PATCH] Fix an issue where tracker reading progress is changed to a lower value (#1795) (cherry picked from commit 2e2f1ed82d63a93ebf87ee8494434c1bad2e268c) # Conflicts: # CHANGELOG.md # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt --- .../tachiyomi/ui/manga/MangaScreenModel.kt | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt index dc157fb11..1c4bb2edb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt @@ -28,6 +28,7 @@ import eu.kanade.domain.manga.model.downloadedFilter import eu.kanade.domain.manga.model.toSManga import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.track.interactor.AddTracks +import eu.kanade.domain.track.interactor.RefreshTracks import eu.kanade.domain.track.interactor.TrackChapter import eu.kanade.domain.track.model.AutoTrackState import eu.kanade.domain.track.model.toDomainTrack @@ -139,6 +140,8 @@ import tachiyomi.source.local.isLocal import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import kotlin.collections.filter +import kotlin.collections.forEach import kotlin.math.floor class MangaScreenModel( @@ -1274,6 +1277,8 @@ class MangaScreenModel( return@launchIO } + refreshTrackers() + val tracks = getTracks.await(mangaId) val maxChapterNumber = chapters.maxOf { it.chapterNumber } val shouldPromptTrackingUpdate = tracks.any { track -> maxChapterNumber > track.lastChapterRead } @@ -1300,6 +1305,27 @@ class MangaScreenModel( } } + private suspend fun refreshTrackers( + refreshTracks: RefreshTracks = Injekt.get(), + ) { + refreshTracks.await(mangaId) + .filter { it.first != null } + .forEach { (track, e) -> + logcat(LogPriority.ERROR, e) { + "Failed to refresh track data mangaId=$mangaId for service ${track!!.id}" + } + withUIContext { + context.toast( + context.stringResource( + MR.strings.track_error, + track!!.name, + e.message ?: "", + ), + ) + } + } + } + /** * Downloads the given list of chapters with the manager. * @param chapters the list of chapters to download.