mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-24 03:36:51 +00:00
feat(settings): update settings items to handle null values for improved stability
This commit is contained in:
@@ -116,32 +116,38 @@ private fun TvSettingOptionItem(
|
||||
) {
|
||||
when (option) {
|
||||
is RangeSetting -> {
|
||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
||||
val value by viewModel.value(option).collectAsState(initial = null)
|
||||
value?.let {
|
||||
TvNumberSettingItem(
|
||||
title = option.title,
|
||||
value = value,
|
||||
value = it,
|
||||
valueRange = option.valueRange,
|
||||
onValueChange = { viewModel.set(option, it) }
|
||||
onValueChange = { value -> viewModel.set(option, value) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is BooleanSetting -> {
|
||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
||||
val value by viewModel.value(option).collectAsState(initial = null)
|
||||
value?.let {
|
||||
TvBooleanSettingItem(
|
||||
title = option.title,
|
||||
value = value,
|
||||
onValueChange = { viewModel.set(option, it) }
|
||||
value = it,
|
||||
onValueChange = { value -> viewModel.set(option, value) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is StringSetting -> {
|
||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
||||
val value by viewModel.value(option).collectAsState(initial = null)
|
||||
value?.let {
|
||||
TvStringSettingItem(
|
||||
title = option.title,
|
||||
value = value,
|
||||
onValueChange = { viewModel.set(option, it) }
|
||||
value = it,
|
||||
onValueChange = { value -> viewModel.set(option, value) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is VoidSetting -> {
|
||||
TvVoidSettingItem(
|
||||
@@ -164,13 +170,15 @@ private fun <T> TvDropdownSettingOptionItem(
|
||||
option: DropdownSetting<T>,
|
||||
viewModel: SettingsViewModel
|
||||
) {
|
||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
||||
val value by viewModel.value(option).collectAsState(initial = null)
|
||||
value?.let {
|
||||
TvDropdownSettingItem(
|
||||
title = option.title,
|
||||
value = value,
|
||||
value = it,
|
||||
options = option.options,
|
||||
onValueChange = { viewModel.set(option, it) }
|
||||
onValueChange = { value -> viewModel.set(option, value) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
||||
@@ -105,32 +105,38 @@ private fun SettingOptionItem(
|
||||
) {
|
||||
when (option) {
|
||||
is RangeSetting -> {
|
||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
||||
val value by viewModel.value(option).collectAsState(initial = null)
|
||||
value?.let {
|
||||
RangeSettingItem(
|
||||
title = option.title,
|
||||
value = value,
|
||||
value = it,
|
||||
valueRange = option.valueRange,
|
||||
onValueChange = { viewModel.set(option, it) }
|
||||
onValueChange = { value -> viewModel.set(option, value) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is BooleanSetting -> {
|
||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
||||
val value by viewModel.value(option).collectAsState(initial = null)
|
||||
value?.let {
|
||||
BooleanSettingItem(
|
||||
title = option.title,
|
||||
value = value,
|
||||
onValueChange = { viewModel.set(option, it) }
|
||||
value = it,
|
||||
onValueChange = { value -> viewModel.set(option, value) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is StringSetting -> {
|
||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
||||
val value by viewModel.value(option).collectAsState(initial = null)
|
||||
value?.let {
|
||||
StringSettingItem(
|
||||
title = option.title,
|
||||
value = value,
|
||||
onValueChange = { viewModel.set(option, it) }
|
||||
value = it,
|
||||
onValueChange = { value -> viewModel.set(option, value) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is VoidSetting -> {
|
||||
VoidSettingItem(
|
||||
@@ -153,13 +159,15 @@ private fun <T> DropdownSettingOptionItem(
|
||||
option: DropdownSetting<T>,
|
||||
viewModel: SettingsViewModel
|
||||
) {
|
||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
||||
val value by viewModel.value(option).collectAsState(initial = null)
|
||||
value?.let {
|
||||
DropdownSettingItem(
|
||||
title = option.title,
|
||||
value = value,
|
||||
value = it,
|
||||
options = option.options,
|
||||
onValueChange = { viewModel.set(option, it) }
|
||||
onValueChange = { value -> viewModel.set(option, value) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
||||
@@ -9,8 +9,8 @@ import hu.bbara.purefin.core.settings.DropdownSetting
|
||||
import hu.bbara.purefin.core.settings.RangeSetting
|
||||
import hu.bbara.purefin.core.settings.SettingGroup
|
||||
import hu.bbara.purefin.core.settings.SettingsGroupProvider
|
||||
import hu.bbara.purefin.core.settings.SettingsRepository
|
||||
import hu.bbara.purefin.core.settings.SettingsOptions
|
||||
import hu.bbara.purefin.core.settings.SettingsRepository
|
||||
import hu.bbara.purefin.core.settings.StringSetting
|
||||
import hu.bbara.purefin.core.settings.VoidSetting
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
|
||||
Reference in New Issue
Block a user