refactor: decouple NavGraph from ViewModel and NodeEntity

This commit is contained in:
andrekir 2024-11-30 07:50:15 -03:00
parent 6678df78b0
commit 716a3f535f
5 changed files with 69 additions and 43 deletions

View file

@ -73,7 +73,6 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.geeksville.mesh.R
import com.geeksville.mesh.android.Logging
import com.geeksville.mesh.database.entity.NodeEntity
import com.geeksville.mesh.model.MetricsViewModel
import com.geeksville.mesh.model.RadioConfigViewModel
import com.geeksville.mesh.ui.components.DeviceMetricsScreen
@ -163,8 +162,6 @@ class NavGraphFragment : ScreenFragment("NavGraph"), Logging {
}
) { innerPadding ->
NavGraph(
node = node,
viewModel = model,
navController = navController,
startDestination = startDestination,
modifier = Modifier.padding(innerPadding),
@ -290,8 +287,6 @@ private fun MeshAppBar(
@Suppress("LongMethod")
@Composable
fun NavGraph(
node: NodeEntity?,
viewModel: RadioConfigViewModel = hiltViewModel(),
navController: NavHostController = rememberNavController(),
startDestination: Any,
modifier: Modifier = Modifier,
@ -302,9 +297,7 @@ fun NavGraph(
modifier = modifier,
) {
composable<Route.NodeDetail> {
NodeDetailScreen(
node = node,
) { navController.navigate(route = it) }
NodeDetailScreen { navController.navigate(route = it) }
}
composable<Route.DeviceMetrics> {
val parentEntry = remember { navController.getBackStackEntry<Route.NodeDetail>() }
@ -331,79 +324,99 @@ fun NavGraph(
TracerouteLogScreen(hiltViewModel<MetricsViewModel>(parentEntry))
}
composable<Route.RadioConfig> {
RadioConfigScreen(
node = node,
viewModel = viewModel,
) { navController.navigate(route = it) }
RadioConfigScreen { navController.navigate(route = it) }
}
composable<Route.User> {
UserConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
UserConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Channels> {
ChannelConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
ChannelConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Device> {
DeviceConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
DeviceConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Position> {
PositionConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
PositionConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Power> {
PowerConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
PowerConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Network> {
NetworkConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
NetworkConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Display> {
DisplayConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
DisplayConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.LoRa> {
LoRaConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
LoRaConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Bluetooth> {
BluetoothConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
BluetoothConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Security> {
SecurityConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
SecurityConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.MQTT> {
MQTTConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
MQTTConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Serial> {
SerialConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
SerialConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.ExtNotification> {
ExternalNotificationConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
ExternalNotificationConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.StoreForward> {
StoreForwardConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
StoreForwardConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.RangeTest> {
RangeTestConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
RangeTestConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Telemetry> {
TelemetryConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
TelemetryConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.CannedMessage> {
CannedMessageConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
CannedMessageConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Audio> {
AudioConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
AudioConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.RemoteHardware> {
RemoteHardwareConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
RemoteHardwareConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.NeighborInfo> {
NeighborInfoConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
NeighborInfoConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.AmbientLighting> {
AmbientLightingConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
AmbientLightingConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.DetectionSensor> {
DetectionSensorConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
DetectionSensorConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
composable<Route.Paxcounter> {
PaxcounterConfigScreen(viewModel)
val parentEntry = remember { navController.getBackStackEntry<Route.RadioConfig>() }
PaxcounterConfigScreen(hiltViewModel<RadioConfigViewModel>(parentEntry))
}
}
}