Remove repetition in enhanced tracker preference declarations

Also hides entries that aren't relevant (i.e. if you don't have the source installed).
This commit is contained in:
arkon 2023-01-07 14:41:27 -05:00
parent 0f45907144
commit d8b528a4e0
2 changed files with 14 additions and 57 deletions

View File

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

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="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_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_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> <string name="action_track">Track</string>
<!-- Browse section --> <!-- Browse section -->