Remove repetition in enhanced tracker preference declarations

Also hides entries that aren't relevant (i.e. if you don't have the source installed).

(cherry picked from commit d8b528a4e0d1da00c653c0123ee01848db4b1b87)
This commit is contained in:
arkon 2023-01-07 14:41:27 -05:00 committed by Jobobby04
parent 08557aa5e6
commit e8ccb88a06
2 changed files with 14 additions and 57 deletions

View File

@ -1,7 +1,6 @@
package eu.kanade.presentation.more.settings.screen
import android.content.Context
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -82,6 +81,7 @@ object SettingsTrackingScreen : SearchableSettings {
val context = LocalContext.current
val trackPreferences = remember { Injekt.get<TrackPreferences>() }
val trackManager = remember { Injekt.get<TrackManager>() }
val sourceManager = remember { Injekt.get<SourceManager>() }
var dialog by remember { mutableStateOf<Any?>(null) }
dialog?.run {
@ -151,61 +151,19 @@ object SettingsTrackingScreen : SearchableSettings {
),
Preference.PreferenceGroup(
title = stringResource(R.string.enhanced_services),
preferenceItems = listOf(
Preference.PreferenceItem.TrackingPreference(
title = stringResource(trackManager.komga.nameRes()),
service = trackManager.komga,
login = {
val sourceManager = Injekt.get<SourceManager>()
val acceptedSources = trackManager.komga.getAcceptedSources()
val hasValidSourceInstalled = sourceManager.getCatalogueSources()
.any { it::class.qualifiedName in acceptedSources }
if (hasValidSourceInstalled) {
trackManager.komga.loginNoop()
} else {
context.toast(context.getString(R.string.enhanced_tracking_warning, context.getString(trackManager.komga.nameRes())), Toast.LENGTH_LONG)
}
},
logout = trackManager.komga::logout,
),
Preference.PreferenceItem.TrackingPreference(
title = stringResource(trackManager.kavita.nameRes()),
service = trackManager.kavita,
login = {
val sourceManager = Injekt.get<SourceManager>()
val acceptedSources = trackManager.kavita.getAcceptedSources()
val hasValidSourceInstalled = sourceManager.getCatalogueSources()
.any { it::class.qualifiedName in acceptedSources }
if (hasValidSourceInstalled) {
trackManager.kavita.loginNoop()
} else {
context.toast(context.getString(R.string.enhanced_tracking_warning, context.getString(trackManager.kavita.nameRes())), Toast.LENGTH_LONG)
}
},
logout = trackManager.kavita::logout,
),
Preference.PreferenceItem.TrackingPreference(
title = stringResource(trackManager.suwayomi.nameRes()),
service = trackManager.suwayomi,
login = {
val sourceManager = Injekt.get<SourceManager>()
val acceptedSources = trackManager.suwayomi.getAcceptedSources()
val hasValidSourceInstalled = sourceManager.getCatalogueSources()
.any { it::class.qualifiedName in acceptedSources }
if (hasValidSourceInstalled) {
trackManager.suwayomi.loginNoop()
} else {
context.toast(context.getString(R.string.enhanced_tracking_warning, context.getString(trackManager.suwayomi.nameRes())), Toast.LENGTH_LONG)
}
},
logout = trackManager.suwayomi::logout,
),
Preference.PreferenceItem.InfoPreference(stringResource(R.string.enhanced_tracking_info)),
),
preferenceItems = listOf(trackManager.komga, trackManager.kavita, trackManager.suwayomi)
.filter { service ->
val acceptedSources = service.getAcceptedSources()
sourceManager.getCatalogueSources().any { it::class.qualifiedName in acceptedSources }
}
.map { service ->
Preference.PreferenceItem.TrackingPreference(
title = stringResource(service.nameRes()),
service = service,
login = service::loginNoop,
logout = service::logout,
)
} + listOf(Preference.PreferenceItem.InfoPreference(stringResource(R.string.enhanced_tracking_info))),
),
)
}

View File

@ -452,7 +452,6 @@
<string name="tracking_info">One-way sync to update the chapter progress in tracking services. Set up tracking for individual entries from their tracking button.</string>
<string name="enhanced_services">Enhanced services</string>
<string name="enhanced_tracking_info">Services that provide enhanced features for specific sources. Entries are automatically tracked when added to your library.</string>
<string name="enhanced_tracking_warning">This tracker is only compatible with the %1$s source.</string>
<string name="action_track">Track</string>
<!-- Browse section -->