diff --git a/app/src/main/java/com/sadellie/unitto/UnittoNavigation.kt b/app/src/main/java/com/sadellie/unitto/UnittoNavigation.kt index 66bdf941..1ec18b88 100644 --- a/app/src/main/java/com/sadellie/unitto/UnittoNavigation.kt +++ b/app/src/main/java/com/sadellie/unitto/UnittoNavigation.kt @@ -19,8 +19,10 @@ package com.sadellie.unitto import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable import com.sadellie.unitto.feature.converter.MainViewModel import com.sadellie.unitto.feature.converter.navigation.converterRoute import com.sadellie.unitto.feature.converter.navigation.converterScreen @@ -28,11 +30,13 @@ import com.sadellie.unitto.feature.settings.SettingsViewModel import com.sadellie.unitto.feature.settings.navigation.navigateToSettings import com.sadellie.unitto.feature.settings.navigation.navigateToUnitGroups import com.sadellie.unitto.feature.settings.navigation.settingGraph +import com.sadellie.unitto.feature.unitslist.LeftSideScreen +import com.sadellie.unitto.feature.unitslist.RightSideScreen import com.sadellie.unitto.feature.unitslist.SecondViewModel -import com.sadellie.unitto.feature.unitslist.navigation.leftSideScreen +import com.sadellie.unitto.feature.unitslist.navigation.leftSideRoute import com.sadellie.unitto.feature.unitslist.navigation.navigateToLeftSide import com.sadellie.unitto.feature.unitslist.navigation.navigateToRightSide -import com.sadellie.unitto.feature.unitslist.navigation.rightSideScreen +import com.sadellie.unitto.feature.unitslist.navigation.rightSideRoute import io.github.sadellie.themmo.ThemmoController @Composable @@ -54,23 +58,41 @@ fun UnittoNavigation( viewModel = mainViewModel ) - leftSideScreen( - secondViewModel = secondViewModel, - unitFrom = mainViewModel.uiStateFlow.value.unitFrom ?: return@NavHost, - navigateUp = { navController.navigateUp() }, - navigateToUnitGroups = { navController.navigateToUnitGroups() }, - onSelectAction = { mainViewModel.updateUnitFrom(it) } - ) + composable(leftSideRoute) { + // Don't do this in your app + val mainUiState = mainViewModel.uiStateFlow.collectAsState() + val unitFrom = mainUiState.value.unitFrom ?: return@composable + // Initial group + secondViewModel.setSelectedChip(unitFrom.group, true) - rightSideScreen( - secondViewModel = secondViewModel, - unitFrom = mainViewModel.uiStateFlow.value.unitFrom ?: return@NavHost, - unitTo = mainViewModel.uiStateFlow.value.unitTo ?: return@NavHost, - inputValue = mainViewModel.getInputValue(), - navigateUp = { navController.navigateUp() }, - navigateToUnitGroups = { navController.navigateToUnitGroups() }, - onSelectAction = { mainViewModel.updateUnitTo(it) } - ) + LeftSideScreen( + viewModel = secondViewModel, + currentUnit = unitFrom, + navigateUp = { navController.navigateUp() }, + navigateToSettingsAction = { navController.navigateToUnitGroups() }, + selectAction = { mainViewModel.updateUnitFrom(it) } + ) + } + + composable(rightSideRoute) { + // Don't do this in your app + val mainUiState = mainViewModel.uiStateFlow.collectAsState() + val unitFrom = mainUiState.value.unitFrom ?: return@composable + val unitTo = mainUiState.value.unitTo ?: return@composable + + // Initial group + secondViewModel.setSelectedChip(unitFrom.group, false) + + RightSideScreen( + viewModel = secondViewModel, + currentUnit = unitTo, + navigateUp = { navController.navigateUp() }, + navigateToSettingsAction = { navController.navigateToUnitGroups() }, + selectAction = { mainViewModel.updateUnitTo(it) }, + inputValue = mainViewModel.getInputValue(), + unitFrom = unitFrom + ) + } settingGraph( settingsViewModel = settingsViewModel, diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt index af497f70..650d09d3 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt @@ -52,7 +52,7 @@ fun UnitSelectionButton( ) { Button( modifier = modifier, - onClick = { onClick() }, + onClick = onClick, enabled = label != null, colors = ButtonDefaults.buttonColors( containerColor = MaterialTheme.colorScheme.primaryContainer diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/navigation/UnitsListNavigation.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/navigation/UnitsListNavigation.kt index 8dfb329f..4e739b69 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/navigation/UnitsListNavigation.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/navigation/UnitsListNavigation.kt @@ -19,12 +19,6 @@ package com.sadellie.unitto.feature.unitslist.navigation import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder -import androidx.navigation.compose.composable -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.feature.unitslist.LeftSideScreen -import com.sadellie.unitto.feature.unitslist.RightSideScreen -import com.sadellie.unitto.feature.unitslist.SecondViewModel const val leftSideRoute = "left_side_route" const val rightSideRoute = "right_side_route" @@ -36,48 +30,3 @@ fun NavController.navigateToLeftSide() { fun NavController.navigateToRightSide() { navigate(rightSideRoute) } - -fun NavGraphBuilder.leftSideScreen( - secondViewModel: SecondViewModel, - unitFrom: AbstractUnit, - navigateUp: () -> Unit, - navigateToUnitGroups: () -> Unit, - onSelectAction: (AbstractUnit) -> Unit, -) { - composable(leftSideRoute) { - secondViewModel.setSelectedChip(unitFrom.group, true) - - LeftSideScreen( - viewModel = secondViewModel, - currentUnit = unitFrom, - navigateUp = navigateUp, - navigateToSettingsAction = navigateToUnitGroups, - selectAction = onSelectAction - ) - } -} - -fun NavGraphBuilder.rightSideScreen( - secondViewModel: SecondViewModel, - unitFrom: AbstractUnit, - unitTo: AbstractUnit, - inputValue: String, - navigateUp: () -> Unit, - navigateToUnitGroups: () -> Unit, - onSelectAction: (AbstractUnit) -> Unit -) { - composable(rightSideRoute) { - // Initial group - secondViewModel.setSelectedChip(unitFrom.group, false) - - RightSideScreen( - viewModel = secondViewModel, - currentUnit = unitTo, - navigateUp = navigateUp, - navigateToSettingsAction = navigateToUnitGroups, - selectAction = onSelectAction, - inputValue = inputValue, - unitFrom = unitFrom, - ) - } -} \ No newline at end of file