mirror of
https://github.com/Myzel394/NumberHub.git
synced 2025-06-19 08:45:27 +02:00
Fixed navigation.
P.S. Ugly fix, will change later.
This commit is contained in:
parent
c72316acf1
commit
a8cbb8f89e
@ -19,8 +19,10 @@
|
|||||||
package com.sadellie.unitto
|
package com.sadellie.unitto
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.navigation.NavHostController
|
import androidx.navigation.NavHostController
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
|
import androidx.navigation.compose.composable
|
||||||
import com.sadellie.unitto.feature.converter.MainViewModel
|
import com.sadellie.unitto.feature.converter.MainViewModel
|
||||||
import com.sadellie.unitto.feature.converter.navigation.converterRoute
|
import com.sadellie.unitto.feature.converter.navigation.converterRoute
|
||||||
import com.sadellie.unitto.feature.converter.navigation.converterScreen
|
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.navigateToSettings
|
||||||
import com.sadellie.unitto.feature.settings.navigation.navigateToUnitGroups
|
import com.sadellie.unitto.feature.settings.navigation.navigateToUnitGroups
|
||||||
import com.sadellie.unitto.feature.settings.navigation.settingGraph
|
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.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.navigateToLeftSide
|
||||||
import com.sadellie.unitto.feature.unitslist.navigation.navigateToRightSide
|
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
|
import io.github.sadellie.themmo.ThemmoController
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -54,23 +58,41 @@ fun UnittoNavigation(
|
|||||||
viewModel = mainViewModel
|
viewModel = mainViewModel
|
||||||
)
|
)
|
||||||
|
|
||||||
leftSideScreen(
|
composable(leftSideRoute) {
|
||||||
secondViewModel = secondViewModel,
|
// Don't do this in your app
|
||||||
unitFrom = mainViewModel.uiStateFlow.value.unitFrom ?: return@NavHost,
|
val mainUiState = mainViewModel.uiStateFlow.collectAsState()
|
||||||
navigateUp = { navController.navigateUp() },
|
val unitFrom = mainUiState.value.unitFrom ?: return@composable
|
||||||
navigateToUnitGroups = { navController.navigateToUnitGroups() },
|
// Initial group
|
||||||
onSelectAction = { mainViewModel.updateUnitFrom(it) }
|
secondViewModel.setSelectedChip(unitFrom.group, true)
|
||||||
)
|
|
||||||
|
|
||||||
rightSideScreen(
|
LeftSideScreen(
|
||||||
secondViewModel = secondViewModel,
|
viewModel = secondViewModel,
|
||||||
unitFrom = mainViewModel.uiStateFlow.value.unitFrom ?: return@NavHost,
|
currentUnit = unitFrom,
|
||||||
unitTo = mainViewModel.uiStateFlow.value.unitTo ?: return@NavHost,
|
navigateUp = { navController.navigateUp() },
|
||||||
inputValue = mainViewModel.getInputValue(),
|
navigateToSettingsAction = { navController.navigateToUnitGroups() },
|
||||||
navigateUp = { navController.navigateUp() },
|
selectAction = { mainViewModel.updateUnitFrom(it) }
|
||||||
navigateToUnitGroups = { navController.navigateToUnitGroups() },
|
)
|
||||||
onSelectAction = { mainViewModel.updateUnitTo(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(
|
settingGraph(
|
||||||
settingsViewModel = settingsViewModel,
|
settingsViewModel = settingsViewModel,
|
||||||
|
@ -52,7 +52,7 @@ fun UnitSelectionButton(
|
|||||||
) {
|
) {
|
||||||
Button(
|
Button(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
onClick = { onClick() },
|
onClick = onClick,
|
||||||
enabled = label != null,
|
enabled = label != null,
|
||||||
colors = ButtonDefaults.buttonColors(
|
colors = ButtonDefaults.buttonColors(
|
||||||
containerColor = MaterialTheme.colorScheme.primaryContainer
|
containerColor = MaterialTheme.colorScheme.primaryContainer
|
||||||
|
@ -19,12 +19,6 @@
|
|||||||
package com.sadellie.unitto.feature.unitslist.navigation
|
package com.sadellie.unitto.feature.unitslist.navigation
|
||||||
|
|
||||||
import androidx.navigation.NavController
|
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 leftSideRoute = "left_side_route"
|
||||||
const val rightSideRoute = "right_side_route"
|
const val rightSideRoute = "right_side_route"
|
||||||
@ -36,48 +30,3 @@ fun NavController.navigateToLeftSide() {
|
|||||||
fun NavController.navigateToRightSide() {
|
fun NavController.navigateToRightSide() {
|
||||||
navigate(rightSideRoute)
|
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,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user