diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/settings/TvSettingsScreen.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/settings/TvSettingsScreen.kt index 2dca14b2..56f6d113 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/settings/TvSettingsScreen.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/settings/TvSettingsScreen.kt @@ -116,31 +116,37 @@ private fun TvSettingOptionItem( ) { when (option) { is RangeSetting -> { - val value by viewModel.value(option).collectAsState(initial = option.defaultValue) - TvNumberSettingItem( - title = option.title, - value = value, - valueRange = option.valueRange, - onValueChange = { viewModel.set(option, it) } - ) + val value by viewModel.value(option).collectAsState(initial = null) + value?.let { + TvNumberSettingItem( + title = option.title, + value = it, + valueRange = option.valueRange, + onValueChange = { value -> viewModel.set(option, value) } + ) + } } is BooleanSetting -> { - val value by viewModel.value(option).collectAsState(initial = option.defaultValue) - TvBooleanSettingItem( - title = option.title, - value = value, - onValueChange = { viewModel.set(option, it) } - ) + val value by viewModel.value(option).collectAsState(initial = null) + value?.let { + TvBooleanSettingItem( + title = option.title, + value = it, + onValueChange = { value -> viewModel.set(option, value) } + ) + } } is StringSetting -> { - val value by viewModel.value(option).collectAsState(initial = option.defaultValue) - TvStringSettingItem( - title = option.title, - value = value, - onValueChange = { viewModel.set(option, it) } - ) + val value by viewModel.value(option).collectAsState(initial = null) + value?.let { + TvStringSettingItem( + title = option.title, + value = it, + onValueChange = { value -> viewModel.set(option, value) } + ) + } } is VoidSetting -> { @@ -164,13 +170,15 @@ private fun TvDropdownSettingOptionItem( option: DropdownSetting, viewModel: SettingsViewModel ) { - val value by viewModel.value(option).collectAsState(initial = option.defaultValue) - TvDropdownSettingItem( - title = option.title, - value = value, - options = option.options, - onValueChange = { viewModel.set(option, it) } - ) + val value by viewModel.value(option).collectAsState(initial = null) + value?.let { + TvDropdownSettingItem( + title = option.title, + value = it, + options = option.options, + onValueChange = { value -> viewModel.set(option, value) } + ) + } } @Composable diff --git a/app/src/main/java/hu/bbara/purefin/ui/screen/settings/SettingsScreen.kt b/app/src/main/java/hu/bbara/purefin/ui/screen/settings/SettingsScreen.kt index 76108d3c..cd996fb5 100644 --- a/app/src/main/java/hu/bbara/purefin/ui/screen/settings/SettingsScreen.kt +++ b/app/src/main/java/hu/bbara/purefin/ui/screen/settings/SettingsScreen.kt @@ -105,31 +105,37 @@ private fun SettingOptionItem( ) { when (option) { is RangeSetting -> { - val value by viewModel.value(option).collectAsState(initial = option.defaultValue) - RangeSettingItem( - title = option.title, - value = value, - valueRange = option.valueRange, - onValueChange = { viewModel.set(option, it) } - ) + val value by viewModel.value(option).collectAsState(initial = null) + value?.let { + RangeSettingItem( + title = option.title, + value = it, + valueRange = option.valueRange, + onValueChange = { value -> viewModel.set(option, value) } + ) + } } is BooleanSetting -> { - val value by viewModel.value(option).collectAsState(initial = option.defaultValue) - BooleanSettingItem( - title = option.title, - value = value, - onValueChange = { viewModel.set(option, it) } - ) + val value by viewModel.value(option).collectAsState(initial = null) + value?.let { + BooleanSettingItem( + title = option.title, + value = it, + onValueChange = { value -> viewModel.set(option, value) } + ) + } } is StringSetting -> { - val value by viewModel.value(option).collectAsState(initial = option.defaultValue) - StringSettingItem( - title = option.title, - value = value, - onValueChange = { viewModel.set(option, it) } - ) + val value by viewModel.value(option).collectAsState(initial = null) + value?.let { + StringSettingItem( + title = option.title, + value = it, + onValueChange = { value -> viewModel.set(option, value) } + ) + } } is VoidSetting -> { @@ -153,13 +159,15 @@ private fun DropdownSettingOptionItem( option: DropdownSetting, viewModel: SettingsViewModel ) { - val value by viewModel.value(option).collectAsState(initial = option.defaultValue) - DropdownSettingItem( - title = option.title, - value = value, - options = option.options, - onValueChange = { viewModel.set(option, it) } - ) + val value by viewModel.value(option).collectAsState(initial = null) + value?.let { + DropdownSettingItem( + title = option.title, + value = it, + options = option.options, + onValueChange = { value -> viewModel.set(option, value) } + ) + } } @Composable diff --git a/core/src/main/java/hu/bbara/purefin/core/feature/settings/SettingsViewModel.kt b/core/src/main/java/hu/bbara/purefin/core/feature/settings/SettingsViewModel.kt index d9ff7703..9bf9b450 100644 --- a/core/src/main/java/hu/bbara/purefin/core/feature/settings/SettingsViewModel.kt +++ b/core/src/main/java/hu/bbara/purefin/core/feature/settings/SettingsViewModel.kt @@ -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