Colton Idle
05/14/2022, 2:04 AM@Composable
fun RequireSignedInUser(
navController: NavController,
appStateHolder: AppStateHolder,
content: @Composable () -> Unit
) {
if (appStateHolder.isLoggedIn) { content() } else { LaunchedEffect(Unit) { navController.navigate(route = Screen.LoginScreen.route) }
}
}
composable(Screen.Tab1.route) { Tab1Screen() }
composable(Screen.Tab2.route) { Tab2Screen() }
composable(Screen.Tab3.route) { Tab3Screen() }
but I want tab 1, 2, and 3 to all kick the user to the loginScreen if the user is logged out. So I created RequireSignedInUser and then use it as such
composable(Screen.Tab1.route) { RequireSignedInUser(navController, appStateHolder){Tab1Screen()} }
composable(Screen.Tab2.route) { RequireSignedInUser(navController, appStateHolder){Tab2Screen()} }
composable(Screen.Tab3.route) { RequireSignedInUser(navController, appStateHolder){Tab3Screen()} }
tad
05/14/2022, 10:57 PMZach Klippenstein (he/him) [MOD]
05/15/2022, 8:26 PMColton Idle
05/15/2022, 8:27 PMTash
05/18/2022, 2:16 AMAppStateHolder
stable/immutable? i wonder if there’s overhead in adding the wrapper for each destination. Agree with Tad, the login check should happen outside of the nav graph (i.e you dont see that nav graph unless you are logged in)Colton Idle
05/24/2022, 7:51 AM