Refactor: Simplify back stack entry retrieval and navigation (#2405)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
James Rich 2025-07-09 15:16:29 +00:00 committed by GitHub
parent 9259e21aed
commit 1bad58a889
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 26 additions and 26 deletions

View file

@ -47,7 +47,8 @@ fun NavGraphBuilder.channelsGraph(navController: NavHostController, uiViewModel:
) {
composable<ChannelsRoutes.Channels> { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<ChannelsRoutes.ChannelsGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
ChannelScreen(
viewModel = uiViewModel,
@ -65,7 +66,8 @@ private fun NavGraphBuilder.configRoutes(
ConfigRoute.entries.forEach { configRoute ->
composable(configRoute.route::class) { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<ChannelsRoutes.ChannelsGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
when (configRoute) {
ConfigRoute.CHANNELS -> ChannelConfigScreen(hiltViewModel(parentEntry))

View file

@ -59,7 +59,8 @@ fun NavGraphBuilder.connectionsGraph(
)
) { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<ConnectionsRoutes.ConnectionsGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
ConnectionsScreen(
uiViewModel = uiViewModel,
@ -79,7 +80,8 @@ private fun NavGraphBuilder.configRoutes(
) {
composable<RadioConfigRoutes.LoRa> { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<ConnectionsRoutes.ConnectionsGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
LoRaConfigScreen(hiltViewModel(parentEntry))
}

View file

@ -119,7 +119,8 @@ fun NavGraphBuilder.nodeDetailGraph(
) {
composable<NodesRoutes.NodeDetail> { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<NodesRoutes.NodeDetailGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
NodeDetailScreen(
uiViewModel = uiViewModel,
@ -138,7 +139,8 @@ fun NavGraphBuilder.nodeDetailGraph(
NodeDetailRoute.entries.forEach { nodeDetailRoute ->
composable(nodeDetailRoute.route::class) { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<NodesRoutes.NodeDetailGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
when (nodeDetailRoute) {
NodeDetailRoute.DEVICE -> DeviceMetricsScreen(hiltViewModel(parentEntry))

View file

@ -165,7 +165,8 @@ fun NavGraphBuilder.radioConfigGraph(navController: NavHostController, uiViewMod
) {
composable<RadioConfigRoutes.RadioConfig> { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<RadioConfigRoutes.RadioConfigGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
RadioConfigScreen(
uiViewModel = uiViewModel,
@ -189,7 +190,8 @@ private fun NavGraphBuilder.configRoutes(
ConfigRoute.entries.forEach { configRoute ->
composable(configRoute.route::class) { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<RadioConfigRoutes.RadioConfigGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
when (configRoute) {
ConfigRoute.USER -> UserConfigScreen(hiltViewModel(parentEntry))
@ -214,7 +216,8 @@ private fun NavGraphBuilder.moduleRoutes(
ModuleRoute.entries.forEach { moduleRoute ->
composable(moduleRoute.route::class) { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry<RadioConfigRoutes.RadioConfigGraph>()
val parentRoute = backStackEntry.destination.parent!!.route!!
navController.getBackStackEntry(parentRoute)
}
when (moduleRoute) {
ModuleRoute.MQTT -> MQTTConfigScreen(hiltViewModel(parentEntry))