feat(manga-tracking): Allow auto open tracking dialog when adding to library (komikku-app/anikku#59)

* feat(manga-tracking): Allow auto open tracking dialog when adding to library

* Prevent tracking dialog shows up overwrite change-category dialog

* Refactoring

(cherry picked from commit e82af25e198931d04fc2f75f663017fabced904c)
This commit is contained in:
Cuong-Tran 2025-07-17 14:57:34 +07:00
parent d0823ef3f6
commit 737bec70f0
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
5 changed files with 26 additions and 3 deletions

View file

@ -38,6 +38,8 @@ class TrackPreferences(
fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true)
fun trackOnAddingToLibrary() = preferenceStore.getBoolean("track_on_adding_to_library", true)
fun autoUpdateTrackOnMarkRead() = preferenceStore.getEnum(
"pref_auto_update_manga_on_mark_read",
AutoTrackState.ALWAYS,

View file

@ -93,7 +93,6 @@ object SettingsTrackingScreen : SearchableSettings {
val trackPreferences = remember { Injekt.get<TrackPreferences>() }
val trackerManager = remember { Injekt.get<TrackerManager>() }
val sourceManager = remember { Injekt.get<SourceManager>() }
val autoTrackStatePref = trackPreferences.autoUpdateTrackOnMarkRead()
var dialog by remember { mutableStateOf<Any?>(null) }
dialog?.run {
@ -130,6 +129,10 @@ object SettingsTrackingScreen : SearchableSettings {
}
return listOf(
Preference.PreferenceItem.SwitchPreference(
preference = trackPreferences.trackOnAddingToLibrary(),
title = stringResource(KMR.strings.pref_track_on_add_library),
),
Preference.PreferenceItem.SwitchPreference(
preference = trackPreferences.autoUpdateTrack(),
title = stringResource(MR.strings.pref_auto_update_manga_sync),

View file

@ -467,7 +467,13 @@ class MangaScreen(
var showScanlatorsDialog by remember { mutableStateOf(false) }
val onDismissRequest = { screenModel.dismissDialog() }
val onDismissRequest = {
screenModel.dismissDialog()
if (screenModel.autoOpenTrack && screenModel.showTrackDialogAfterCategorySelection) {
screenModel.showTrackDialogAfterCategorySelection = false
screenModel.showTrackDialog()
}
}
when (val dialog = successState.dialog) {
null -> {}
is MangaScreenModel.Dialog.ChangeCategory -> {

View file

@ -269,6 +269,11 @@ class MangaScreenModel(
private val selectedPositions: Array<Int> = arrayOf(-1, -1) // first and last selected index in list
private val selectedChapterIds: HashSet<Long> = HashSet()
internal var showTrackDialogAfterCategorySelection: Boolean = false
internal val autoOpenTrack: Boolean
get() = successState?.hasLoggedInTrackers == true && trackPreferences.trackOnAddingToLibrary().get()
// EXH -->
private val updateHelper: EHentaiUpdateHelper by injectLazy()
@ -850,11 +855,17 @@ class MangaScreenModel(
}
// Choose a category
else -> showChangeCategoryDialog()
else -> {
showTrackDialogAfterCategorySelection = true
showChangeCategoryDialog()
}
}
// Finally match with enhanced tracking when available
addTracks.bindEnhancedTrackers(manga, state.source)
if (autoOpenTrack && !showTrackDialogAfterCategorySelection) {
showTrackDialog()
}
}
}
}

View file

@ -94,6 +94,7 @@
<!-- Tracking section -->
<string name="pref_auto_sync_progress_from_trackers">Auto sync progress from Trackers</string>
<string name="sync_progress_from_trackers_up_to_chapter">Sync progress from Trackers up to chapter %d</string>
<string name="pref_track_on_add_library">Open track menu on adding to library</string>
<!-- Sync section -->
<string name="pref_show_restoring_progress_banner">Show restoring progress banner</string>
<string name="pref_show_syncing_progress_banner">Show syncing progress banner</string>