Rework Auto Track on Mark as Read (mihonapp/mihon#1365)
(cherry picked from commit c153ac01f545ce9259c58aa5d5f7223d2f8f628b)
This commit is contained in:
parent
256fe760cc
commit
0085e22a1c
5 changed files with 33 additions and 16 deletions
|
|
@ -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 <--
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,6 @@
|
|||
<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>
|
||||
|
||||
<!-- Tracking section -->
|
||||
<string name="pref_update_tracking_marked_read">Update progress when marked as read</string>
|
||||
<string name="pref_auto_sync_read_chapters">Auto sync read chapters from Trackers</string>
|
||||
|
||||
<!-- Sync section -->
|
||||
|
|
|
|||
|
|
@ -511,6 +511,7 @@
|
|||
<!-- Tracking section -->
|
||||
<string name="tracking_guide">Tracking guide</string>
|
||||
<string name="pref_auto_update_manga_sync">Update progress after reading</string>
|
||||
<string name="pref_auto_update_manga_on_mark_read">Update progress when marked as read</string>
|
||||
<string name="services">Trackers</string>
|
||||
<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>
|
||||
<string name="enhanced_services">Enhanced trackers</string>
|
||||
|
|
@ -741,6 +742,7 @@
|
|||
<string name="exclude_scanlators">Exclude scanlators</string>
|
||||
<string name="no_scanlators_found">No scanlators found</string>
|
||||
<string name="confirm_tracker_update">Update trackers to chapter %d?</string>
|
||||
<string name="trackers_updated_summary">Trackers updated to chapter %d</string>
|
||||
|
||||
<!-- Tracking Screen -->
|
||||
<string name="manga_tracking_tab">Tracking</string>
|
||||
|
|
|
|||
Loading…
Reference in a new issue