Skip to content

Commit 0085e22

Browse files
Animeboynzcuong-tran
authored andcommitted
Rework Auto Track on Mark as Read (mihonapp/mihon#1365)
(cherry picked from commit c153ac0)
1 parent 256fe76 commit 0085e22

File tree

5 files changed

+33
-16
lines changed

5 files changed

+33
-16
lines changed

app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ class TrackPreferences(
3636

3737
fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true)
3838

39-
// KMK -->
40-
fun updateTrackMarkedRead() = preferenceStore.getBoolean("pref_update_tracking_marked_read_key", true)
39+
fun autoUpdateTrackOnMarkRead() = preferenceStore.getBoolean("pref_auto_update_manga_on_mark_read", true)
4140

41+
// KMK -->
4242
fun autoSyncReadChapters() = preferenceStore.getBoolean("pref_auto_sync_read_chapters_key", true)
4343
// KMK <--
4444
}

app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,11 @@ object SettingsTrackingScreen : SearchableSettings {
127127
pref = trackPreferences.autoUpdateTrack(),
128128
title = stringResource(MR.strings.pref_auto_update_manga_sync),
129129
),
130-
// KMK -->
131130
Preference.PreferenceItem.SwitchPreference(
132-
pref = trackPreferences.updateTrackMarkedRead(),
133-
title = stringResource(KMR.strings.pref_update_tracking_marked_read),
131+
pref = trackPreferences.autoUpdateTrackOnMarkRead(),
132+
title = stringResource(MR.strings.pref_auto_update_manga_on_mark_read),
134133
),
134+
// KMK -->
135135
Preference.PreferenceItem.SwitchPreference(
136136
pref = trackPreferences.autoSyncReadChapters(),
137137
title = stringResource(KMR.strings.pref_auto_sync_read_chapters),

app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt

+26-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package eu.kanade.tachiyomi.ui.manga
22

33
import android.content.Context
4+
import androidx.compose.material3.SnackbarDuration
45
import androidx.compose.material3.SnackbarHostState
56
import androidx.compose.material3.SnackbarResult
67
import androidx.compose.runtime.Composable
@@ -10,7 +11,6 @@ import androidx.compose.runtime.produceState
1011
import androidx.compose.runtime.toMutableStateList
1112
import androidx.compose.ui.graphics.Color
1213
import androidx.compose.ui.util.fastAny
13-
import androidx.compose.ui.util.fastMaxOfOrNull
1414
import androidx.lifecycle.Lifecycle
1515
import androidx.lifecycle.flowWithLifecycle
1616
import androidx.palette.graphics.Palette
@@ -169,11 +169,11 @@ class MangaScreenModel(
169169
private val smartSearched: Boolean,
170170
// SY <--
171171
private val libraryPreferences: LibraryPreferences = Injekt.get(),
172+
private val trackPreferences: TrackPreferences = Injekt.get(),
172173
readerPreferences: ReaderPreferences = Injekt.get(),
173174
private val uiPreferences: UiPreferences = Injekt.get(),
174175
// KMK -->
175176
private val sourcePreferences: SourcePreferences = Injekt.get(),
176-
private val trackPreferences: TrackPreferences = Injekt.get(),
177177
// KMK <--
178178
private val trackerManager: TrackerManager = Injekt.get(),
179179
private val trackChapter: TrackChapter = Injekt.get(),
@@ -1339,15 +1339,31 @@ class MangaScreenModel(
13391339
)
13401340

13411341
if (!read) return@launchIO
1342-
// KMK -->
1343-
if (!trackPreferences.updateTrackMarkedRead().get()) return@launchIO
1344-
chapters.fastMaxOfOrNull { it.chapterNumber }
1345-
?.also { chapterNumber ->
1346-
screenModelScope.launchNonCancellable {
1347-
trackChapter.await(context, mangaId, chapterNumber)
1348-
}
1342+
1343+
val tracks = getTracks.await(mangaId)
1344+
val maxChapterNumber = chapters.maxOf { it.chapterNumber }
1345+
val shouldPromptTrackingUpdate = tracks.any { track -> maxChapterNumber > track.lastChapterRead }
1346+
1347+
if (!shouldPromptTrackingUpdate) return@launchIO
1348+
1349+
if (trackPreferences.autoUpdateTrackOnMarkRead().get()) {
1350+
trackChapter.await(context, mangaId, maxChapterNumber)
1351+
withUIContext {
1352+
context.toast(context.stringResource(MR.strings.trackers_updated_summary, maxChapterNumber.toInt()))
13491353
}
1350-
// KMK <--
1354+
return@launchIO
1355+
}
1356+
1357+
val result = snackbarHostState.showSnackbar(
1358+
message = context.stringResource(MR.strings.confirm_tracker_update, maxChapterNumber.toInt()),
1359+
actionLabel = context.stringResource(MR.strings.action_ok),
1360+
duration = SnackbarDuration.Short,
1361+
withDismissAction = true,
1362+
)
1363+
1364+
if (result == SnackbarResult.ActionPerformed) {
1365+
trackChapter.await(context, mangaId, maxChapterNumber)
1366+
}
13511367
}
13521368
}
13531369

i18n-kmk/src/commonMain/moko-resources/base/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@
8585
<string name="download_cache_renew_interval_info">If set to "manual", either refresh each manga or using the "Invalidate downloads index" action in "Advanced"</string>
8686

8787
<!-- Tracking section -->
88-
<string name="pref_update_tracking_marked_read">Update progress when marked as read</string>
8988
<string name="pref_auto_sync_read_chapters">Auto sync read chapters from Trackers</string>
9089

9190
<!-- Sync section -->

i18n/src/commonMain/moko-resources/base/strings.xml

+2
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,7 @@
511511
<!-- Tracking section -->
512512
<string name="tracking_guide">Tracking guide</string>
513513
<string name="pref_auto_update_manga_sync">Update progress after reading</string>
514+
<string name="pref_auto_update_manga_on_mark_read">Update progress when marked as read</string>
514515
<string name="services">Trackers</string>
515516
<string name="tracking_info">One-way sync to update the chapter progress in external tracker services. Set up tracking for individual entries from their tracking button.</string>
516517
<string name="enhanced_services">Enhanced trackers</string>
@@ -741,6 +742,7 @@
741742
<string name="exclude_scanlators">Exclude scanlators</string>
742743
<string name="no_scanlators_found">No scanlators found</string>
743744
<string name="confirm_tracker_update">Update trackers to chapter %d?</string>
745+
<string name="trackers_updated_summary">Trackers updated to chapter %d</string>
744746

745747
<!-- Tracking Screen -->
746748
<string name="manga_tracking_tab">Tracking</string>

0 commit comments

Comments
 (0)