Skip to content

Instantly share code, notes, and snippets.

@Priyanka0818
Last active January 23, 2025 10:40
Show Gist options
  • Save Priyanka0818/ac7bc16a874dd9bfbaf41f84f91097ac to your computer and use it in GitHub Desktop.
Save Priyanka0818/ac7bc16a874dd9bfbaf41f84f91097ac to your computer and use it in GitHub Desktop.
class NavigationActivity : ComponentActivity() {
private val userViewModel: UserViewModel by viewModel()
private val networkConnection: NetworkConnection by inject()
@SuppressLint("FlowOperatorInvokedInComposition", "StateFlowValueCalledInComposition")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
KtorCRUDTheme {
val networkStatus = networkConnection.networkStatus
LaunchedEffect(key1 = Unit) {
networkStatus.collect { isOffline ->
userViewModel.updateStartRoute(if (isOffline) ShowData else NoInternet)
}
}
val startRoute by userViewModel.startRoute.collectAsState()
NavigationComponent(navController, startRoute)
}
}
}
@Composable
private fun NavigationComponent(
navController: NavHostController,
startRoute: Any
) {
NavHost(navController = navController, startDestination = startRoute) {
composable<NoInternet> {
ShowNoInternetStatus()
}
composable<ShowData> {
LoadUsers(userViewModel) { data ->
navController.navigate(ShowIndividualData(data))
}
}
composable<ShowIndividualData> {
val args = it.toRoute<Data>()
ClickActivity(args)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment