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 722f3d68f..d7762f4eb 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 @@ -36,9 +36,9 @@ class TrackPreferences( fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true) - // KMK --> - fun updateTrackMarkedRead() = preferenceStore.getBoolean("pref_update_tracking_marked_read_key", true) + fun autoUpdateTrackOnMarkRead() = preferenceStore.getBoolean("pref_auto_update_manga_on_mark_read", true) + // KMK --> fun autoSyncReadChapters() = preferenceStore.getBoolean("pref_auto_sync_read_chapters_key", true) // KMK <-- } 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 a88266f4a..340e9896f 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 @@ -127,11 +127,11 @@ object SettingsTrackingScreen : SearchableSettings { pref = trackPreferences.autoUpdateTrack(), title = stringResource(MR.strings.pref_auto_update_manga_sync), ), - // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = trackPreferences.updateTrackMarkedRead(), - title = stringResource(KMR.strings.pref_update_tracking_marked_read), + pref = trackPreferences.autoUpdateTrackOnMarkRead(), + title = stringResource(MR.strings.pref_auto_update_manga_on_mark_read), ), + // KMK --> Preference.PreferenceItem.SwitchPreference( pref = trackPreferences.autoSyncReadChapters(), title = stringResource(KMR.strings.pref_auto_sync_read_chapters), 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 44fa0ac30..258dd3361 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 @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.manga import android.content.Context +import androidx.compose.material3.SnackbarDuration import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.runtime.Composable @@ -10,7 +11,6 @@ import androidx.compose.runtime.produceState import androidx.compose.runtime.toMutableStateList import androidx.compose.ui.graphics.Color import androidx.compose.ui.util.fastAny -import androidx.compose.ui.util.fastMaxOfOrNull import androidx.lifecycle.Lifecycle import androidx.lifecycle.flowWithLifecycle import androidx.palette.graphics.Palette @@ -169,11 +169,11 @@ class MangaScreenModel( private val smartSearched: Boolean, // SY <-- private val libraryPreferences: LibraryPreferences = Injekt.get(), + private val trackPreferences: TrackPreferences = Injekt.get(), readerPreferences: ReaderPreferences = Injekt.get(), private val uiPreferences: UiPreferences = Injekt.get(), // KMK --> private val sourcePreferences: SourcePreferences = Injekt.get(), - private val trackPreferences: TrackPreferences = Injekt.get(), // KMK <-- private val trackerManager: TrackerManager = Injekt.get(), private val trackChapter: TrackChapter = Injekt.get(), @@ -1339,15 +1339,31 @@ class MangaScreenModel( ) if (!read) return@launchIO - // KMK --> - if (!trackPreferences.updateTrackMarkedRead().get()) return@launchIO - chapters.fastMaxOfOrNull { it.chapterNumber } - ?.also { chapterNumber -> - screenModelScope.launchNonCancellable { - trackChapter.await(context, mangaId, chapterNumber) - } + + val tracks = getTracks.await(mangaId) + val maxChapterNumber = chapters.maxOf { it.chapterNumber } + val shouldPromptTrackingUpdate = tracks.any { track -> maxChapterNumber > track.lastChapterRead } + + 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())) } - // KMK <-- + return@launchIO + } + + val result = snackbarHostState.showSnackbar( + message = context.stringResource(MR.strings.confirm_tracker_update, maxChapterNumber.toInt()), + actionLabel = context.stringResource(MR.strings.action_ok), + duration = SnackbarDuration.Short, + withDismissAction = true, + ) + + if (result == SnackbarResult.ActionPerformed) { + trackChapter.await(context, mangaId, maxChapterNumber) + } } } diff --git a/i18n-kmk/src/commonMain/moko-resources/base/strings.xml b/i18n-kmk/src/commonMain/moko-resources/base/strings.xml index 6d30c03dc..2c5bbbd66 100644 --- a/i18n-kmk/src/commonMain/moko-resources/base/strings.xml +++ b/i18n-kmk/src/commonMain/moko-resources/base/strings.xml @@ -85,7 +85,6 @@ If set to "manual", either refresh each manga or using the "Invalidate downloads index" action in "Advanced" - Update progress when marked as read Auto sync read chapters from Trackers diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml index 16bc10fa3..a4db617e2 100644 --- a/i18n/src/commonMain/moko-resources/base/strings.xml +++ b/i18n/src/commonMain/moko-resources/base/strings.xml @@ -511,6 +511,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 @@ -741,6 +742,7 @@ Exclude scanlators No scanlators found Update trackers to chapter %d? + Trackers updated to chapter %d Tracking