From 47382e993ac63c115e68fa8eb7510b8a280d75f9 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sun, 18 Sep 2022 00:07:01 +0200 Subject: [PATCH] Add: StringPref composable --- .../ui/compose/components/prefs/BasicPrefs.kt | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/BasicPrefs.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/BasicPrefs.kt index b361e7c8..54503cad 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/BasicPrefs.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/BasicPrefs.kt @@ -285,3 +285,41 @@ fun IntPreference( onClick = onClick ) } + +@Composable +fun StringPreference( + modifier: Modifier = Modifier, + prefKey: Preferences.Key, + index: Int = 1, + groupSize: Int = 1, + onClick: (() -> Unit) = {}, +) { + val dependency = PrefsDependencies[prefKey] + var isEnabled by remember { + mutableStateOf(dependency?.let { Preferences[dependency] != it.default.value } ?: true) + } + var prefValue by remember { + mutableStateOf(Preferences[prefKey]) + } + SideEffect { + CoroutineScope(Dispatchers.Default).launch { + Preferences.subject.collect { + when (it) { + prefKey -> prefValue = Preferences[prefKey] + dependency -> isEnabled = Preferences[it] != it.default.value + else -> {} + } + } + } + } + + BasePreference( + modifier = modifier, + titleId = NonBooleanPrefsMeta[prefKey] ?: -1, + summary = prefValue, + index = index, + groupSize = groupSize, + isEnabled = isEnabled, + onClick = onClick + ) +}