Skip to content

Commit 262c700

Browse files
committed
chore: fix custom settings screen acc. to kmp-settings
1 parent 5e7b6cb commit 262c700

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

‎app/src/main/java/app/cclauncher/ui/screens/SettingsScreen.kt‎

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,16 +300,23 @@ fun SettingsScreen(
300300
val field = currentField
301301
val meta = field?.meta
302302
if (field != null && meta != null) {
303-
val selectedIndex = (field.get(uiState) as? Int) ?: 0
303+
val selectedIndex = field.toUiDropdownIndex(uiState)
304+
?: (field.get(uiState) as? Int) ?: 0
304305

305306
DropdownSettingDialog(
306307
title = meta.resolvedTitle(stringProvider),
307-
options = meta.resolvedOptions(stringProvider),
308+
options = meta.dropdownLabels(field, stringProvider),
308309
selectedIndex = selectedIndex,
309310
onDismiss = { showingDialog = null },
310311
onOptionSelected = { index ->
311312
coroutineScope.launch {
312-
viewModel.updateSetting(field.name, index)
313+
val current = field.get(uiState)
314+
if (current is Int) {
315+
viewModel.updateSetting(field.name, index)
316+
} else {
317+
field.fromUiDropdownIndex(index)
318+
?.let { viewModel.updateSetting(field.name, it) }
319+
}
313320
showingDialog = null
314321
}
315322
}
@@ -554,8 +561,9 @@ fun SettingsScreen(
554561

555562

556563
Dropdown::class -> {
557-
val idx = (field.get(uiState) as? Int) ?: 0
558-
val options = meta.resolvedOptions(stringProvider)
564+
val idx = field.toUiDropdownIndex(uiState)
565+
?: (field.get(uiState) as? Int) ?: 0
566+
val options = meta.dropdownLabels(field, stringProvider)
559567
val displayText = options.getOrNull(idx) ?: "Unknown"
560568

561569
SettingsItem(

0 commit comments

Comments
 (0)