From 880d7ae7862a5b937695c329c175c79926586ff8 Mon Sep 17 00:00:00 2001 From: Brian Yencho Date: Thu, 31 Aug 2023 13:23:07 -0500 Subject: [PATCH] Update all navigateTo helpers to pass NavOptions (#20) --- .../ui/feature/login/LoginNavigation.kt | 12 ++++----- .../ui/feature/rootnav/RootNavScreen.kt | 25 +++++++++++-------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/feature/login/LoginNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/feature/login/LoginNavigation.kt index 869b09e8a..d98528cc6 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/feature/login/LoginNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/feature/login/LoginNavigation.kt @@ -3,6 +3,7 @@ package com.x8bit.bitwarden.ui.feature.login import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController +import androidx.navigation.NavOptions import androidx.navigation.navigation import com.x8bit.bitwarden.ui.feature.createaccount.createAccountDestinations import com.x8bit.bitwarden.ui.feature.createaccount.navigateToCreateAccount @@ -30,11 +31,8 @@ fun NavGraphBuilder.loginDestinations(navController: NavHostController) { * Navigate to the login screen. Note this will only work if login destination was added * via [loginDestinations]. */ -fun NavController.navigateToLoginAsRoot() { - navigate(LANDING_ROUTE) { - // When changing root navigation state, pop everything else off the back stack: - popUpTo(graph.id) { - inclusive = true - } - } +fun NavController.navigateToLogin( + navOptions: NavOptions? = null, +) { + navigate(LANDING_ROUTE, navOptions) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/feature/rootnav/RootNavScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/feature/rootnav/RootNavScreen.kt index 9de8650a3..9548bc073 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/feature/rootnav/RootNavScreen.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/feature/rootnav/RootNavScreen.kt @@ -6,12 +6,14 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavOptions import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import androidx.navigation.navOptions import com.x8bit.bitwarden.ui.components.PlaceholderComposable import com.x8bit.bitwarden.ui.feature.login.loginDestinations -import com.x8bit.bitwarden.ui.feature.login.navigateToLoginAsRoot +import com.x8bit.bitwarden.ui.feature.login.navigateToLogin /** * Controls root level [NavHost] for the app. @@ -32,9 +34,15 @@ fun RootNavScreen( } // When state changes, navigate to different root navigation state + val rootNavOptions = navOptions { + // When changing root navigation state, pop everything else off the back stack: + popUpTo(navController.graph.id) { + inclusive = true + } + } when (state) { - RootNavState.Login -> navController.navigateToLoginAsRoot() - RootNavState.Splash -> navController.navigateToSplashAsRoot() + RootNavState.Login -> navController.navigateToLogin(rootNavOptions) + RootNavState.Splash -> navController.navigateToSplash(rootNavOptions) } } @@ -68,11 +76,8 @@ private fun NavGraphBuilder.splashDestinations() { * TODO: move to splash package (BIT-147) * */ -private fun NavController.navigateToSplashAsRoot() { - navigate(SplashRoute) { - // When changing root navigation state, pop everything else off the back stack: - popUpTo(graph.id) { - inclusive = true - } - } +private fun NavController.navigateToSplash( + navOptions: NavOptions? = null, +) { + navigate(SplashRoute, navOptions) }