diff options
Diffstat (limited to 'anastasis/src/main/java/net/taler/anastasis/ui/common/SelectContinentScreen.kt')
-rw-r--r-- | anastasis/src/main/java/net/taler/anastasis/ui/common/SelectContinentScreen.kt | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/anastasis/src/main/java/net/taler/anastasis/ui/common/SelectContinentScreen.kt b/anastasis/src/main/java/net/taler/anastasis/ui/common/SelectContinentScreen.kt index 303b82e..eacbea4 100644 --- a/anastasis/src/main/java/net/taler/anastasis/ui/common/SelectContinentScreen.kt +++ b/anastasis/src/main/java/net/taler/anastasis/ui/common/SelectContinentScreen.kt @@ -30,7 +30,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import net.taler.anastasis.R -import net.taler.anastasis.models.ContinentInfo import net.taler.anastasis.models.ReducerState import net.taler.anastasis.ui.reusable.components.Picker import net.taler.anastasis.ui.reusable.pages.WizardPage @@ -48,15 +47,25 @@ fun SelectContinentScreen( else -> error("invalid reducer state type") } ?: emptyList() - var selectedContinent by remember { mutableStateOf<ContinentInfo?>(null) } + val selectedContinent = when (val state = reducerState) { + is ReducerState.Backup -> state.selectedContinent + is ReducerState.Recovery -> state.selectedContinent + else -> error("invalid reducer state type") + } + + var localContinent by remember { + mutableStateOf(selectedContinent?.let { selected -> + continents.find { it.name == selected } + }) + } WizardPage( title = stringResource(R.string.select_continent_title), showPrev = false, - enableNext = selectedContinent != null, + enableNext = localContinent != null, onBackClicked = { viewModel.goHome() }, onNextClicked = { - selectedContinent?.let { + localContinent?.let { viewModel.reducerManager.selectContinent(it) } }, @@ -69,11 +78,11 @@ fun SelectContinentScreen( ) { Picker( label = stringResource(R.string.continent), - initialOption = selectedContinent?.name, + initialOption = localContinent?.name, options = continents.map { it.name }.toSet(), onOptionChanged = { option -> continents.find { it.name == option }?.let { continent -> - selectedContinent = continent + localContinent = continent } }, ) |