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) {
|
when (option) {
|
||||||
is RangeSetting -> {
|
is RangeSetting -> {
|
||||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
val value by viewModel.value(option).collectAsState(initial = null)
|
||||||
|
value?.let {
|
||||||
TvNumberSettingItem(
|
TvNumberSettingItem(
|
||||||
title = option.title,
|
title = option.title,
|
||||||
value = value,
|
value = it,
|
||||||
valueRange = option.valueRange,
|
valueRange = option.valueRange,
|
||||||
onValueChange = { viewModel.set(option, it) }
|
onValueChange = { value -> viewModel.set(option, value) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
is BooleanSetting -> {
|
is BooleanSetting -> {
|
||||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
val value by viewModel.value(option).collectAsState(initial = null)
|
||||||
|
value?.let {
|
||||||
TvBooleanSettingItem(
|
TvBooleanSettingItem(
|
||||||
title = option.title,
|
title = option.title,
|
||||||
value = value,
|
value = it,
|
||||||
onValueChange = { viewModel.set(option, it) }
|
onValueChange = { value -> viewModel.set(option, value) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
is StringSetting -> {
|
is StringSetting -> {
|
||||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
val value by viewModel.value(option).collectAsState(initial = null)
|
||||||
|
value?.let {
|
||||||
TvStringSettingItem(
|
TvStringSettingItem(
|
||||||
title = option.title,
|
title = option.title,
|
||||||
value = value,
|
value = it,
|
||||||
onValueChange = { viewModel.set(option, it) }
|
onValueChange = { value -> viewModel.set(option, value) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
is VoidSetting -> {
|
is VoidSetting -> {
|
||||||
TvVoidSettingItem(
|
TvVoidSettingItem(
|
||||||
@@ -164,13 +170,15 @@ private fun <T> TvDropdownSettingOptionItem(
|
|||||||
option: DropdownSetting<T>,
|
option: DropdownSetting<T>,
|
||||||
viewModel: SettingsViewModel
|
viewModel: SettingsViewModel
|
||||||
) {
|
) {
|
||||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
val value by viewModel.value(option).collectAsState(initial = null)
|
||||||
|
value?.let {
|
||||||
TvDropdownSettingItem(
|
TvDropdownSettingItem(
|
||||||
title = option.title,
|
title = option.title,
|
||||||
value = value,
|
value = it,
|
||||||
options = option.options,
|
options = option.options,
|
||||||
onValueChange = { viewModel.set(option, it) }
|
onValueChange = { value -> viewModel.set(option, value) }
|
||||||
)
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|||||||
@@ -105,32 +105,38 @@ private fun SettingOptionItem(
|
|||||||
) {
|
) {
|
||||||
when (option) {
|
when (option) {
|
||||||
is RangeSetting -> {
|
is RangeSetting -> {
|
||||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
val value by viewModel.value(option).collectAsState(initial = null)
|
||||||
|
value?.let {
|
||||||
RangeSettingItem(
|
RangeSettingItem(
|
||||||
title = option.title,
|
title = option.title,
|
||||||
value = value,
|
value = it,
|
||||||
valueRange = option.valueRange,
|
valueRange = option.valueRange,
|
||||||
onValueChange = { viewModel.set(option, it) }
|
onValueChange = { value -> viewModel.set(option, value) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
is BooleanSetting -> {
|
is BooleanSetting -> {
|
||||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
val value by viewModel.value(option).collectAsState(initial = null)
|
||||||
|
value?.let {
|
||||||
BooleanSettingItem(
|
BooleanSettingItem(
|
||||||
title = option.title,
|
title = option.title,
|
||||||
value = value,
|
value = it,
|
||||||
onValueChange = { viewModel.set(option, it) }
|
onValueChange = { value -> viewModel.set(option, value) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
is StringSetting -> {
|
is StringSetting -> {
|
||||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
val value by viewModel.value(option).collectAsState(initial = null)
|
||||||
|
value?.let {
|
||||||
StringSettingItem(
|
StringSettingItem(
|
||||||
title = option.title,
|
title = option.title,
|
||||||
value = value,
|
value = it,
|
||||||
onValueChange = { viewModel.set(option, it) }
|
onValueChange = { value -> viewModel.set(option, value) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
is VoidSetting -> {
|
is VoidSetting -> {
|
||||||
VoidSettingItem(
|
VoidSettingItem(
|
||||||
@@ -153,13 +159,15 @@ private fun <T> DropdownSettingOptionItem(
|
|||||||
option: DropdownSetting<T>,
|
option: DropdownSetting<T>,
|
||||||
viewModel: SettingsViewModel
|
viewModel: SettingsViewModel
|
||||||
) {
|
) {
|
||||||
val value by viewModel.value(option).collectAsState(initial = option.defaultValue)
|
val value by viewModel.value(option).collectAsState(initial = null)
|
||||||
|
value?.let {
|
||||||
DropdownSettingItem(
|
DropdownSettingItem(
|
||||||
title = option.title,
|
title = option.title,
|
||||||
value = value,
|
value = it,
|
||||||
options = option.options,
|
options = option.options,
|
||||||
onValueChange = { viewModel.set(option, it) }
|
onValueChange = { value -> viewModel.set(option, value) }
|
||||||
)
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@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.RangeSetting
|
||||||
import hu.bbara.purefin.core.settings.SettingGroup
|
import hu.bbara.purefin.core.settings.SettingGroup
|
||||||
import hu.bbara.purefin.core.settings.SettingsGroupProvider
|
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.SettingsOptions
|
||||||
|
import hu.bbara.purefin.core.settings.SettingsRepository
|
||||||
import hu.bbara.purefin.core.settings.StringSetting
|
import hu.bbara.purefin.core.settings.StringSetting
|
||||||
import hu.bbara.purefin.core.settings.VoidSetting
|
import hu.bbara.purefin.core.settings.VoidSetting
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
|
|||||||
Reference in New Issue
Block a user