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)
|
fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true)
|
||||||
|
|
||||||
// KMK -->
|
fun autoUpdateTrackOnMarkRead() = preferenceStore.getBoolean("pref_auto_update_manga_on_mark_read", true)
|
||||||
fun updateTrackMarkedRead() = preferenceStore.getBoolean("pref_update_tracking_marked_read_key", true)
|
|
||||||
|
|
||||||
|
// KMK -->
|
||||||
fun autoSyncReadChapters() = preferenceStore.getBoolean("pref_auto_sync_read_chapters_key", true)
|
fun autoSyncReadChapters() = preferenceStore.getBoolean("pref_auto_sync_read_chapters_key", true)
|
||||||
// KMK <--
|
// KMK <--
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -127,11 +127,11 @@ object SettingsTrackingScreen : SearchableSettings {
|
||||||
pref = trackPreferences.autoUpdateTrack(),
|
pref = trackPreferences.autoUpdateTrack(),
|
||||||
title = stringResource(MR.strings.pref_auto_update_manga_sync),
|
title = stringResource(MR.strings.pref_auto_update_manga_sync),
|
||||||
),
|
),
|
||||||
// KMK -->
|
|
||||||
Preference.PreferenceItem.SwitchPreference(
|
Preference.PreferenceItem.SwitchPreference(
|
||||||
pref = trackPreferences.updateTrackMarkedRead(),
|
pref = trackPreferences.autoUpdateTrackOnMarkRead(),
|
||||||
title = stringResource(KMR.strings.pref_update_tracking_marked_read),
|
title = stringResource(MR.strings.pref_auto_update_manga_on_mark_read),
|
||||||
),
|
),
|
||||||
|
// KMK -->
|
||||||
Preference.PreferenceItem.SwitchPreference(
|
Preference.PreferenceItem.SwitchPreference(
|
||||||
pref = trackPreferences.autoSyncReadChapters(),
|
pref = trackPreferences.autoSyncReadChapters(),
|
||||||
title = stringResource(KMR.strings.pref_auto_sync_read_chapters),
|
title = stringResource(KMR.strings.pref_auto_sync_read_chapters),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package eu.kanade.tachiyomi.ui.manga
|
package eu.kanade.tachiyomi.ui.manga
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.compose.material3.SnackbarDuration
|
||||||
import androidx.compose.material3.SnackbarHostState
|
import androidx.compose.material3.SnackbarHostState
|
||||||
import androidx.compose.material3.SnackbarResult
|
import androidx.compose.material3.SnackbarResult
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
|
@ -10,7 +11,6 @@ import androidx.compose.runtime.produceState
|
||||||
import androidx.compose.runtime.toMutableStateList
|
import androidx.compose.runtime.toMutableStateList
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.util.fastAny
|
import androidx.compose.ui.util.fastAny
|
||||||
import androidx.compose.ui.util.fastMaxOfOrNull
|
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.flowWithLifecycle
|
import androidx.lifecycle.flowWithLifecycle
|
||||||
import androidx.palette.graphics.Palette
|
import androidx.palette.graphics.Palette
|
||||||
|
|
@ -169,11 +169,11 @@ class MangaScreenModel(
|
||||||
private val smartSearched: Boolean,
|
private val smartSearched: Boolean,
|
||||||
// SY <--
|
// SY <--
|
||||||
private val libraryPreferences: LibraryPreferences = Injekt.get(),
|
private val libraryPreferences: LibraryPreferences = Injekt.get(),
|
||||||
|
private val trackPreferences: TrackPreferences = Injekt.get(),
|
||||||
readerPreferences: ReaderPreferences = Injekt.get(),
|
readerPreferences: ReaderPreferences = Injekt.get(),
|
||||||
private val uiPreferences: UiPreferences = Injekt.get(),
|
private val uiPreferences: UiPreferences = Injekt.get(),
|
||||||
// KMK -->
|
// KMK -->
|
||||||
private val sourcePreferences: SourcePreferences = Injekt.get(),
|
private val sourcePreferences: SourcePreferences = Injekt.get(),
|
||||||
private val trackPreferences: TrackPreferences = Injekt.get(),
|
|
||||||
// KMK <--
|
// KMK <--
|
||||||
private val trackerManager: TrackerManager = Injekt.get(),
|
private val trackerManager: TrackerManager = Injekt.get(),
|
||||||
private val trackChapter: TrackChapter = Injekt.get(),
|
private val trackChapter: TrackChapter = Injekt.get(),
|
||||||
|
|
@ -1339,15 +1339,31 @@ class MangaScreenModel(
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!read) return@launchIO
|
if (!read) return@launchIO
|
||||||
// KMK -->
|
|
||||||
if (!trackPreferences.updateTrackMarkedRead().get()) return@launchIO
|
val tracks = getTracks.await(mangaId)
|
||||||
chapters.fastMaxOfOrNull { it.chapterNumber }
|
val maxChapterNumber = chapters.maxOf { it.chapterNumber }
|
||||||
?.also { chapterNumber ->
|
val shouldPromptTrackingUpdate = tracks.any { track -> maxChapterNumber > track.lastChapterRead }
|
||||||
screenModelScope.launchNonCancellable {
|
|
||||||
trackChapter.await(context, mangaId, chapterNumber)
|
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>
|
<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 -->
|
<!-- 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>
|
<string name="pref_auto_sync_read_chapters">Auto sync read chapters from Trackers</string>
|
||||||
|
|
||||||
<!-- Sync section -->
|
<!-- Sync section -->
|
||||||
|
|
|
||||||
|
|
@ -511,6 +511,7 @@
|
||||||
<!-- Tracking section -->
|
<!-- Tracking section -->
|
||||||
<string name="tracking_guide">Tracking guide</string>
|
<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_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="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="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>
|
<string name="enhanced_services">Enhanced trackers</string>
|
||||||
|
|
@ -741,6 +742,7 @@
|
||||||
<string name="exclude_scanlators">Exclude scanlators</string>
|
<string name="exclude_scanlators">Exclude scanlators</string>
|
||||||
<string name="no_scanlators_found">No scanlators found</string>
|
<string name="no_scanlators_found">No scanlators found</string>
|
||||||
<string name="confirm_tracker_update">Update trackers to chapter %d?</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 -->
|
<!-- Tracking Screen -->
|
||||||
<string name="manga_tracking_tab">Tracking</string>
|
<string name="manga_tracking_tab">Tracking</string>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue