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) }
}
}
Colton Idle
05/14/2022, 2:06 AMcomposable(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()} }
Colton Idle
05/14/2022, 2:10 AMtad
05/14/2022, 10:57 PMZach Klippenstein (he/him) [MOD]
05/15/2022, 8:26 PMColton Idle
05/15/2022, 8:27 PMColton Idle
05/15/2022, 10:17 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)Tash
05/18/2022, 2:16 AMColton Idle
05/24/2022, 7:51 AM