diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/SettingsNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/SettingsNavigation.kt index 8f1e8979c..9f9c44fbf 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/SettingsNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/SettingsNavigation.kt @@ -4,23 +4,33 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable +import androidx.navigation.navigation -const val SETTINGS_ROUTE: String = "settings" +const val SETTINGS_GRAPH_ROUTE: String = "settings_graph" +private const val SETTINGS_ROUTE: String = "settings" /** * Add settings destinations to the nav graph. */ -fun NavGraphBuilder.settingsDestinations( - onNavigateToAccountSecurity: () -> Unit, +fun NavGraphBuilder.settingsGraph( + navController: NavController, ) { - composable(SETTINGS_ROUTE) { - SettingsScreen(onNavigateToAccountSecurity = onNavigateToAccountSecurity) + navigation( + startDestination = SETTINGS_ROUTE, + route = SETTINGS_GRAPH_ROUTE, + ) { + composable(SETTINGS_ROUTE) { + SettingsScreen( + onNavigateToAccountSecurity = { navController.navigateToAccountSecurity() }, + ) + } + accountSecurityDestination(onNavigateBack = { navController.popBackStack() }) } } /** * Navigate to the settings screen screen. */ -fun NavController.navigateToSettings(navOptions: NavOptions? = null) { - navigate(SETTINGS_ROUTE, navOptions) +fun NavController.navigateToSettingsGraph(navOptions: NavOptions? = null) { + navigate(SETTINGS_GRAPH_ROUTE, navOptions) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt index 2ed3c5630..f0a81f5f0 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt @@ -5,8 +5,6 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.NavOptions import androidx.navigation.navigation -import com.x8bit.bitwarden.ui.platform.feature.settings.accountSecurityDestination -import com.x8bit.bitwarden.ui.platform.feature.settings.navigateToAccountSecurity import com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar.VAULT_UNLOCKED_NAV_BAR_ROUTE import com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar.vaultUnlockedNavBarDestination @@ -27,11 +25,6 @@ fun NavGraphBuilder.vaultUnlockedDestinations(navController: NavHostController) startDestination = VAULT_UNLOCKED_NAV_BAR_ROUTE, route = VAULT_UNLOCKED_ROUTE, ) { - vaultUnlockedNavBarDestination( - onNavigateToAccountSecurity = { navController.navigateToAccountSecurity() }, - ) - accountSecurityDestination( - onNavigateBack = { navController.popBackStack() }, - ) + vaultUnlockedNavBarDestination() } } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarNavigation.kt index 6a2807d5f..826dc8d6c 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarNavigation.kt @@ -20,12 +20,8 @@ fun NavController.navigateToVaultUnlockedNavBar(navOptions: NavOptions? = null) /** * Add vault unlocked destination to the root nav graph. */ -fun NavGraphBuilder.vaultUnlockedNavBarDestination( - onNavigateToAccountSecurity: () -> Unit, -) { +fun NavGraphBuilder.vaultUnlockedNavBarDestination() { composable(VAULT_UNLOCKED_NAV_BAR_ROUTE) { - VaultUnlockedNavBarScreen( - onNavigateToAccountSecurity = onNavigateToAccountSecurity, - ) + VaultUnlockedNavBarScreen() } } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreen.kt index ea464b3b7..e5d066439 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreen.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreen.kt @@ -28,9 +28,9 @@ import androidx.navigation.navOptions import com.x8bit.bitwarden.R import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect import com.x8bit.bitwarden.ui.platform.components.PlaceholderComposable -import com.x8bit.bitwarden.ui.platform.feature.settings.SETTINGS_ROUTE -import com.x8bit.bitwarden.ui.platform.feature.settings.navigateToSettings -import com.x8bit.bitwarden.ui.platform.feature.settings.settingsDestinations +import com.x8bit.bitwarden.ui.platform.feature.settings.SETTINGS_GRAPH_ROUTE +import com.x8bit.bitwarden.ui.platform.feature.settings.navigateToSettingsGraph +import com.x8bit.bitwarden.ui.platform.feature.settings.settingsGraph import com.x8bit.bitwarden.ui.tools.feature.generator.GENERATOR_ROUTE import com.x8bit.bitwarden.ui.tools.feature.generator.generatorDestination import com.x8bit.bitwarden.ui.tools.feature.generator.navigateToGenerator @@ -44,7 +44,6 @@ import kotlinx.parcelize.Parcelize */ @Composable fun VaultUnlockedNavBarScreen( - onNavigateToAccountSecurity: () -> Unit, viewModel: VaultUnlockedNavBarViewModel = hiltViewModel(), navController: NavHostController = rememberNavController(), ) { @@ -65,14 +64,13 @@ fun VaultUnlockedNavBarScreen( } VaultUnlockedNavBarEvent.NavigateToSettingsScreen -> { - navigateToSettings(navOptions) + navigateToSettingsGraph(navOptions) } } } } VaultUnlockedNavBarScaffold( navController = navController, - onNavigateToAccountSecurity = onNavigateToAccountSecurity, generatorTabClickedAction = { viewModel.trySendAction(VaultUnlockedNavBarAction.GeneratorTabClick) }, @@ -94,7 +92,6 @@ fun VaultUnlockedNavBarScreen( @Composable @Suppress("LongMethod") private fun VaultUnlockedNavBarScaffold( - onNavigateToAccountSecurity: () -> Unit, navController: NavHostController, vaultTabClickedAction: () -> Unit, sendTabClickedAction: () -> Unit, @@ -168,9 +165,7 @@ private fun VaultUnlockedNavBarScaffold( vaultDestination() sendDestination() generatorDestination() - settingsDestinations( - onNavigateToAccountSecurity = onNavigateToAccountSecurity, - ) + settingsGraph(navController) } } } @@ -259,7 +254,7 @@ private sealed class VaultUnlockedNavBarTab : Parcelable { override val iconRes get() = R.drawable.ic_settings override val labelRes get() = R.string.settings override val contentDescriptionRes get() = R.string.settings - override val route get() = SETTINGS_ROUTE + override val route get() = SETTINGS_GRAPH_ROUTE } } diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreenTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreenTest.kt index ffd5d8c1b..831055c70 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreenTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreenTest.kt @@ -32,7 +32,6 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() { VaultUnlockedNavBarScreen( viewModel = viewModel, navController = fakeNavHostController, - onNavigateToAccountSecurity = {}, ) } onNodeWithText("My vault").performClick() @@ -53,7 +52,6 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() { VaultUnlockedNavBarScreen( viewModel = viewModel, navController = fakeNavHostController, - onNavigateToAccountSecurity = {}, ) } runOnIdle { fakeNavHostController.assertCurrentRoute("vault") } @@ -75,7 +73,6 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() { VaultUnlockedNavBarScreen( viewModel = viewModel, navController = fakeNavHostController, - onNavigateToAccountSecurity = {}, ) } onNodeWithText("Send").performClick() @@ -96,7 +93,6 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() { VaultUnlockedNavBarScreen( viewModel = viewModel, navController = fakeNavHostController, - onNavigateToAccountSecurity = {}, ) } runOnIdle { fakeNavHostController.assertCurrentRoute("vault") } @@ -118,7 +114,6 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() { VaultUnlockedNavBarScreen( viewModel = viewModel, navController = fakeNavHostController, - onNavigateToAccountSecurity = {}, ) } onNodeWithText("Generator").performClick() @@ -139,7 +134,6 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() { VaultUnlockedNavBarScreen( viewModel = viewModel, navController = fakeNavHostController, - onNavigateToAccountSecurity = {}, ) } runOnIdle { fakeNavHostController.assertCurrentRoute("vault") } @@ -161,7 +155,6 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() { VaultUnlockedNavBarScreen( viewModel = viewModel, navController = fakeNavHostController, - onNavigateToAccountSecurity = {}, ) } onNodeWithText("Settings").performClick() @@ -182,14 +175,13 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() { VaultUnlockedNavBarScreen( viewModel = viewModel, navController = fakeNavHostController, - onNavigateToAccountSecurity = {}, ) } runOnIdle { fakeNavHostController.assertCurrentRoute("vault") } vaultUnlockedNavBarEventFlow.tryEmit(VaultUnlockedNavBarEvent.NavigateToSettingsScreen) runOnIdle { fakeNavHostController.assertLastNavigation( - route = "settings", + route = "settings_graph", navOptions = expectedNavOptions, ) }