From 14f6fd79088c81ca3e6f815105c5e7c5ef0fb1a9 Mon Sep 17 00:00:00 2001
From: Roshan Varughese <40583749+Animeboynz@users.noreply.github.com>
Date: Fri, 25 Oct 2024 01:23:28 +1300
Subject: [PATCH] Rework Auto Track on Mark as Read (#1365)
(cherry picked from commit c153ac01f545ce9259c58aa5d5f7223d2f8f628b)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
---
.../kanade/domain/track/service/TrackPreferences.kt | 2 ++
.../more/settings/screen/SettingsTrackingScreen.kt | 4 ++++
.../eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt | 11 +++++++++++
i18n/src/commonMain/moko-resources/base/strings.xml | 2 ++
4 files changed, 19 insertions(+)
diff --git a/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt b/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt
index ab000a9ea..e82d3da11 100644
--- a/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt
@@ -35,4 +35,6 @@ class TrackPreferences(
fun anilistScoreType() = preferenceStore.getString("anilist_score_type", Anilist.POINT_10)
fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true)
+
+ fun autoUpdateTrackOnMarkRead() = preferenceStore.getBoolean("pref_auto_update_manga_on_mark_read", true)
}
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
index 021f0ceb2..cec87196a 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
@@ -125,6 +125,10 @@ object SettingsTrackingScreen : SearchableSettings {
pref = trackPreferences.autoUpdateTrack(),
title = stringResource(MR.strings.pref_auto_update_manga_sync),
),
+ Preference.PreferenceItem.SwitchPreference(
+ pref = trackPreferences.autoUpdateTrackOnMarkRead(),
+ title = stringResource(MR.strings.pref_auto_update_manga_on_mark_read),
+ ),
Preference.PreferenceGroup(
title = stringResource(MR.strings.services),
preferenceItems = persistentListOf(
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 e8693334a..5dde13f86 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
@@ -30,6 +30,7 @@ import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.track.interactor.AddTracks
import eu.kanade.domain.track.interactor.TrackChapter
import eu.kanade.domain.track.model.toDomainTrack
+import eu.kanade.domain.track.service.TrackPreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.presentation.manga.DownloadAction
import eu.kanade.presentation.manga.components.ChapterDownloadAction
@@ -48,6 +49,7 @@ import eu.kanade.tachiyomi.source.online.all.MergedSource
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
import eu.kanade.tachiyomi.util.chapter.getNextUnread
import eu.kanade.tachiyomi.util.removeCovers
+import eu.kanade.tachiyomi.util.system.toast
import exh.debug.DebugToggles
import exh.eh.EHentaiUpdateHelper
import exh.log.xLogD
@@ -145,6 +147,7 @@ class MangaScreenModel(
private val isFromSource: Boolean,
val smartSearched: Boolean,
private val libraryPreferences: LibraryPreferences = Injekt.get(),
+ private val trackPreferences: TrackPreferences = Injekt.get(),
readerPreferences: ReaderPreferences = Injekt.get(),
uiPreferences: UiPreferences = Injekt.get(),
private val trackerManager: TrackerManager = Injekt.get(),
@@ -1272,6 +1275,14 @@ class MangaScreenModel(
if (!shouldPromptTrackingUpdate) return@launchIO
+ if (trackPreferences.autoUpdateTrackOnMarkRead().get()) {
+ trackChapter.await(context, mangaId, maxChapterNumber)
+ withUIContext {
+ context.toast(context.stringResource(MR.strings.trackers_updated_summary, maxChapterNumber.toInt()))
+ }
+ return@launchIO
+ }
+
val result = snackbarHostState.showSnackbar(
message = context.stringResource(MR.strings.confirm_tracker_update, maxChapterNumber.toInt()),
actionLabel = context.stringResource(MR.strings.action_ok),
diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml
index b73500812..7d985bab9 100755
--- a/i18n/src/commonMain/moko-resources/base/strings.xml
+++ b/i18n/src/commonMain/moko-resources/base/strings.xml
@@ -509,6 +509,7 @@
Tracking guide
Update progress after reading
+ Update progress when marked as read
Trackers
One-way sync to update the chapter progress in external tracker services. Set up tracking for individual entries from their tracking button.
Enhanced trackers
@@ -739,6 +740,7 @@
Exclude scanlators
No scanlators found
Update trackers to chapter %d?
+ Trackers updated to chapter %d
Tracking