diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountNavigation.kt index 7b51eb93b..c320dd95d 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.auth.feature.createaccount import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions private const val CREATE_ACCOUNT_ROUTE = "create_account" @@ -22,12 +21,8 @@ fun NavGraphBuilder.createAccountDestination( onNavigateBack: () -> Unit, onNavigateToLogin: (emailAddress: String, captchaToken: String) -> Unit, ) { - composable( + composableWithSlideTransitions( route = CREATE_ACCOUNT_ROUTE, - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.slideDown, - popEnterTransition = TransitionProviders.Enter.slideUp, - popExitTransition = TransitionProviders.Exit.slideDown, ) { CreateAccountScreen( onNavigateBack = onNavigateBack, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/enterprisesignon/EnterpriseSignOnNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/enterprisesignon/EnterpriseSignOnNavigation.kt index cdb07660e..04bbe1cd9 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/enterprisesignon/EnterpriseSignOnNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/enterprisesignon/EnterpriseSignOnNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.auth.feature.enterprisesignon import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions private const val ENTERPRISE_SIGN_ON_ROUTE = "enterprise_sign_on" @@ -21,12 +20,8 @@ fun NavController.navigateToEnterpriseSignOn(navOptions: NavOptions? = null) { fun NavGraphBuilder.enterpriseSignOnDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithSlideTransitions( route = ENTERPRISE_SIGN_ON_ROUTE, - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.stay, - popEnterTransition = TransitionProviders.Enter.stay, - popExitTransition = TransitionProviders.Exit.slideDown, ) { EnterpriseSignOnScreen( onNavigateBack = onNavigateBack, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentNavigation.kt index 61db3e473..abd0e27fa 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.auth.feature.environment import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions private const val ENVIRONMENT_ROUTE = "environment" @@ -14,12 +13,8 @@ private const val ENVIRONMENT_ROUTE = "environment" fun NavGraphBuilder.environmentDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithSlideTransitions( route = ENVIRONMENT_ROUTE, - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.slideDown, - popEnterTransition = TransitionProviders.Enter.slideUp, - popExitTransition = TransitionProviders.Exit.slideDown, ) { EnvironmentScreen(onNavigateBack = onNavigateBack) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingNavigation.kt index c02ebfb5a..342a3445f 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.auth.feature.landing import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithStayTransitions const val LANDING_ROUTE: String = "landing" @@ -23,12 +22,8 @@ fun NavGraphBuilder.landingDestination( onNavigateToLogin: (emailAddress: String) -> Unit, onNavigateToEnvironment: () -> Unit, ) { - composable( + composableWithStayTransitions( route = LANDING_ROUTE, - enterTransition = TransitionProviders.Enter.stay, - exitTransition = TransitionProviders.Exit.stay, - popEnterTransition = TransitionProviders.Enter.stay, - popExitTransition = TransitionProviders.Exit.stay, ) { LandingScreen( onNavigateToCreateAccount = onNavigateToCreateAccount, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginNavigation.kt index c982a6734..18d80b3e5 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginNavigation.kt @@ -5,10 +5,9 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.NavType -import androidx.navigation.compose.composable import androidx.navigation.navArgument import com.x8bit.bitwarden.data.platform.annotation.OmitFromCoverage -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions private const val EMAIL_ADDRESS: String = "email_address" private const val CAPTCHA_TOKEN = "captcha_token" @@ -47,7 +46,7 @@ fun NavGraphBuilder.loginDestination( onNavigateToEnterpriseSignOn: () -> Unit, onNavigateToLoginWithDevice: () -> Unit, ) { - composable( + composableWithSlideTransitions( route = LOGIN_ROUTE, arguments = listOf( navArgument(EMAIL_ADDRESS) { type = NavType.StringType }, @@ -56,10 +55,6 @@ fun NavGraphBuilder.loginDestination( nullable = true }, ), - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.stay, - popEnterTransition = TransitionProviders.Enter.stay, - popExitTransition = TransitionProviders.Exit.slideDown, ) { LoginScreen( onNavigateBack = onNavigateBack, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceNavigation.kt index bc1d9cf48..75ba42f58 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.auth.feature.loginwithdevice import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions private const val LOGIN_WITH_DEVICE_ROUTE = "login_with_device" @@ -21,12 +20,8 @@ fun NavController.navigateToLoginWithDevice(navOptions: NavOptions? = null) { fun NavGraphBuilder.loginWithDeviceDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithSlideTransitions( route = LOGIN_WITH_DEVICE_ROUTE, - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.stay, - popEnterTransition = TransitionProviders.Enter.stay, - popExitTransition = TransitionProviders.Exit.slideDown, ) { LoginWithDeviceScreen( onNavigateBack = onNavigateBack, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockNavigation.kt index 22a5e0bd7..03bdfa951 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.auth.feature.vaultunlock import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions const val VAULT_UNLOCK_ROUTE: String = "vault_unlock" @@ -21,12 +20,8 @@ fun NavController.navigateToVaultUnlock( * Add the Vault Unlock screen to the nav graph. */ fun NavGraphBuilder.vaultUnlockDestination() { - composable( + composableWithSlideTransitions( route = VAULT_UNLOCK_ROUTE, - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.slideDown, - popEnterTransition = TransitionProviders.Enter.slideUp, - popExitTransition = TransitionProviders.Exit.slideDown, ) { VaultUnlockScreen() } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/base/util/NavGraphBuilderExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/base/util/NavGraphBuilderExtensions.kt new file mode 100644 index 000000000..61513df9e --- /dev/null +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/base/util/NavGraphBuilderExtensions.kt @@ -0,0 +1,103 @@ +package com.x8bit.bitwarden.ui.platform.base.util + +import androidx.compose.animation.AnimatedContentScope +import androidx.compose.runtime.Composable +import androidx.navigation.NamedNavArgument +import androidx.navigation.NavBackStackEntry +import androidx.navigation.NavDeepLink +import androidx.navigation.NavGraphBuilder +import androidx.navigation.compose.composable +import com.x8bit.bitwarden.data.platform.annotation.OmitFromCoverage +import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders + +/** + * A wrapper around [NavGraphBuilder.composable] that supplies slide up/down transitions. + */ +@OmitFromCoverage +fun NavGraphBuilder.composableWithSlideTransitions( + route: String, + arguments: List<NamedNavArgument> = emptyList(), + deepLinks: List<NavDeepLink> = emptyList(), + content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit, +) { + this.composable( + route = route, + arguments = arguments, + deepLinks = deepLinks, + enterTransition = TransitionProviders.Enter.slideUp, + exitTransition = TransitionProviders.Exit.stay, + popEnterTransition = TransitionProviders.Enter.stay, + popExitTransition = TransitionProviders.Exit.slideDown, + content = content, + ) +} + +/** + * A wrapper around [NavGraphBuilder.composable] that supplies "stay" transitions. + */ +@OmitFromCoverage +fun NavGraphBuilder.composableWithStayTransitions( + route: String, + arguments: List<NamedNavArgument> = emptyList(), + deepLinks: List<NavDeepLink> = emptyList(), + content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit, +) { + this.composable( + route = route, + arguments = arguments, + deepLinks = deepLinks, + enterTransition = TransitionProviders.Enter.stay, + exitTransition = TransitionProviders.Exit.stay, + popEnterTransition = TransitionProviders.Enter.stay, + popExitTransition = TransitionProviders.Exit.stay, + content = content, + ) +} + +/** + * A wrapper around [NavGraphBuilder.composable] that supplies push transitions. + * + * This is suitable for screens deeper within a hierarchy that uses push transitions; the root + * screen of such a hierarchy should use [composableWithRootPushTransitions]. + */ +@OmitFromCoverage +fun NavGraphBuilder.composableWithPushTransitions( + route: String, + arguments: List<NamedNavArgument> = emptyList(), + deepLinks: List<NavDeepLink> = emptyList(), + content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit, +) { + this.composable( + route = route, + arguments = arguments, + deepLinks = deepLinks, + enterTransition = TransitionProviders.Enter.pushLeft, + exitTransition = TransitionProviders.Exit.pushLeft, + popEnterTransition = TransitionProviders.Enter.pushLeft, + popExitTransition = TransitionProviders.Exit.pushRight, + content = content, + ) +} + +/** + * A wrapper around [NavGraphBuilder.composable] that supplies push transitions to the root screen + * in a nested graph that uses push transitions. + */ +@OmitFromCoverage +fun NavGraphBuilder.composableWithRootPushTransitions( + route: String, + arguments: List<NamedNavArgument> = emptyList(), + deepLinks: List<NavDeepLink> = emptyList(), + content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit, +) { + this.composable( + route = route, + arguments = arguments, + deepLinks = deepLinks, + enterTransition = TransitionProviders.Enter.stay, + exitTransition = TransitionProviders.Exit.pushLeft, + popEnterTransition = TransitionProviders.Enter.pushRight, + popExitTransition = TransitionProviders.Exit.fadeOut, + content = content, + ) +} 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 0b31bc1f8..bb22a564c 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 @@ -3,8 +3,8 @@ package com.x8bit.bitwarden.ui.platform.feature.settings import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable import androidx.navigation.navigation +import com.x8bit.bitwarden.ui.platform.base.util.composableWithRootPushTransitions import com.x8bit.bitwarden.ui.platform.feature.settings.about.aboutDestination import com.x8bit.bitwarden.ui.platform.feature.settings.about.navigateToAbout import com.x8bit.bitwarden.ui.platform.feature.settings.accountsecurity.accountSecurityDestination @@ -17,7 +17,6 @@ import com.x8bit.bitwarden.ui.platform.feature.settings.other.navigateToOther import com.x8bit.bitwarden.ui.platform.feature.settings.other.otherDestination import com.x8bit.bitwarden.ui.platform.feature.settings.vault.navigateToVaultSettings import com.x8bit.bitwarden.ui.platform.feature.settings.vault.vaultSettingsDestination -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders const val SETTINGS_GRAPH_ROUTE: String = "settings_graph" private const val SETTINGS_ROUTE: String = "settings" @@ -33,12 +32,8 @@ fun NavGraphBuilder.settingsGraph( startDestination = SETTINGS_ROUTE, route = SETTINGS_GRAPH_ROUTE, ) { - composable( + composableWithRootPushTransitions( route = SETTINGS_ROUTE, - enterTransition = TransitionProviders.Enter.stay, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushRight, - popExitTransition = TransitionProviders.Exit.fadeOut, ) { SettingsScreen( onNavigateToAbout = { navController.navigateToAbout() }, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutNavigation.kt index 48ba740de..8c4769303 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.about import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithPushTransitions private const val ABOUT_ROUTE = "settings_about" @@ -14,12 +13,8 @@ private const val ABOUT_ROUTE = "settings_about" fun NavGraphBuilder.aboutDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithPushTransitions( route = ABOUT_ROUTE, - enterTransition = TransitionProviders.Enter.pushLeft, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushLeft, - popExitTransition = TransitionProviders.Exit.pushRight, ) { AboutScreen(onNavigateBack = onNavigateBack) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityNavigation.kt index 31533bdac..6b496aae4 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.accountsecurity import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithPushTransitions private const val ACCOUNT_SECURITY_ROUTE = "settings_account_security" @@ -15,12 +14,8 @@ fun NavGraphBuilder.accountSecurityDestination( onNavigateBack: () -> Unit, onNavigateToDeleteAccount: () -> Unit, ) { - composable( + composableWithPushTransitions( route = ACCOUNT_SECURITY_ROUTE, - enterTransition = TransitionProviders.Enter.pushLeft, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushLeft, - popExitTransition = TransitionProviders.Exit.pushRight, ) { AccountSecurityScreen( onNavigateBack = onNavigateBack, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountNavigation.kt index 0328d151a..2cd81f880 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.accountsecurity.deletea import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions private const val DELETE_ACCOUNT_ROUTE = "delete_account" @@ -14,12 +13,8 @@ private const val DELETE_ACCOUNT_ROUTE = "delete_account" fun NavGraphBuilder.deleteAccountDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithSlideTransitions( route = DELETE_ACCOUNT_ROUTE, - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.slideDown, - popEnterTransition = TransitionProviders.Enter.slideUp, - popExitTransition = TransitionProviders.Exit.slideDown, ) { DeleteAccountScreen(onNavigateBack = onNavigateBack) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceNavigation.kt index d01ca794d..0681d4ead 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.appearance import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithPushTransitions private const val APPEARANCE_ROUTE = "settings_appearance" @@ -14,12 +13,8 @@ private const val APPEARANCE_ROUTE = "settings_appearance" fun NavGraphBuilder.appearanceDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithPushTransitions( route = APPEARANCE_ROUTE, - enterTransition = TransitionProviders.Enter.pushLeft, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushLeft, - popExitTransition = TransitionProviders.Exit.pushRight, ) { AppearanceScreen(onNavigateBack = onNavigateBack) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/AutoFillNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/AutoFillNavigation.kt index 5f1f05bb6..b64e41e44 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/AutoFillNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/AutoFillNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.autofill import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithPushTransitions private const val AUTO_FILL_ROUTE = "settings_auto_fill" @@ -14,12 +13,8 @@ private const val AUTO_FILL_ROUTE = "settings_auto_fill" fun NavGraphBuilder.autoFillDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithPushTransitions( route = AUTO_FILL_ROUTE, - enterTransition = TransitionProviders.Enter.pushLeft, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushLeft, - popExitTransition = TransitionProviders.Exit.pushRight, ) { AutoFillScreen(onNavigateBack = onNavigateBack) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/other/OtherNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/other/OtherNavigation.kt index 7fa24dcf5..04730ae3d 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/other/OtherNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/other/OtherNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.other import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithPushTransitions private const val OTHER_ROUTE = "settings_other" @@ -14,12 +13,8 @@ private const val OTHER_ROUTE = "settings_other" fun NavGraphBuilder.otherDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithPushTransitions( route = OTHER_ROUTE, - enterTransition = TransitionProviders.Enter.pushLeft, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushLeft, - popExitTransition = TransitionProviders.Exit.pushRight, ) { OtherScreen(onNavigateBack = onNavigateBack) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/vault/VaultSettingsNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/vault/VaultSettingsNavigation.kt index 97feb7728..c8b37b128 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/vault/VaultSettingsNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/vault/VaultSettingsNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.vault import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithPushTransitions private const val VAULT_SETTINGS_ROUTE = "vault_settings" @@ -14,12 +13,8 @@ private const val VAULT_SETTINGS_ROUTE = "vault_settings" fun NavGraphBuilder.vaultSettingsDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithPushTransitions( route = VAULT_SETTINGS_ROUTE, - enterTransition = TransitionProviders.Enter.pushLeft, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushLeft, - popExitTransition = TransitionProviders.Exit.pushRight, ) { VaultSettingsScreen(onNavigateBack = onNavigateBack) } 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 c42c79263..72af0172e 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 @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithStayTransitions /** * The functions below pertain to entry into the [VaultUnlockedNavBarScreen]. @@ -30,12 +29,8 @@ fun NavGraphBuilder.vaultUnlockedNavBarDestination( onNavigateToDeleteAccount: () -> Unit, onNavigateToPasswordHistory: () -> Unit, ) { - composable( + composableWithStayTransitions( route = VAULT_UNLOCKED_NAV_BAR_ROUTE, - enterTransition = TransitionProviders.Enter.stay, - exitTransition = TransitionProviders.Exit.stay, - popEnterTransition = TransitionProviders.Enter.stay, - popExitTransition = TransitionProviders.Exit.stay, ) { VaultUnlockedNavBarScreen( onNavigateToVaultAddItem = onNavigateToVaultAddItem, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/passwordhistory/PasswordHistoryNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/passwordhistory/PasswordHistoryNavigation.kt index 9c62afa20..5aad8a7c7 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/passwordhistory/PasswordHistoryNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/passwordhistory/PasswordHistoryNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.tools.feature.generator.passwordhistory import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions /** * The functions below pertain to entry into the [PasswordHistoryScreen]. @@ -17,13 +16,9 @@ private const val PASSWORD_HISTORY_ROUTE: String = "password_history" fun NavGraphBuilder.passwordHistoryDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithSlideTransitions( // TODO: (BIT-617) Allow Password History screen to launch from VaultItemScreen route = PASSWORD_HISTORY_ROUTE, - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.slideDown, - popEnterTransition = TransitionProviders.Enter.slideUp, - popExitTransition = TransitionProviders.Exit.slideDown, ) { PasswordHistoryScreen( onNavigateBack = onNavigateBack, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/NewSendNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/NewSendNavigation.kt index e558cd79e..799bfac5a 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/NewSendNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/NewSendNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.tools.feature.send import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions private const val NEW_SEND_ROUTE = "new_send" @@ -14,12 +13,8 @@ private const val NEW_SEND_ROUTE = "new_send" fun NavGraphBuilder.newSendDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithSlideTransitions( route = NEW_SEND_ROUTE, - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.slideDown, - popEnterTransition = TransitionProviders.Enter.slideUp, - popExitTransition = TransitionProviders.Exit.slideDown, ) { NewSendScreen(onNavigateBack = onNavigateBack) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendNavigation.kt index bbeb31481..738e11b0f 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.tools.feature.send import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithRootPushTransitions const val SEND_ROUTE: String = "send" @@ -14,12 +13,8 @@ const val SEND_ROUTE: String = "send" fun NavGraphBuilder.sendDestination( onNavigateToNewSend: () -> Unit, ) { - composable( + composableWithRootPushTransitions( route = SEND_ROUTE, - enterTransition = TransitionProviders.Enter.stay, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushRight, - popExitTransition = TransitionProviders.Exit.fadeOut, ) { SendScreen( onNavigateNewSend = onNavigateToNewSend, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/additem/VaultAddEditItemNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/additem/VaultAddEditItemNavigation.kt index 7a0c19daf..22a90f6d0 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/additem/VaultAddEditItemNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/additem/VaultAddEditItemNavigation.kt @@ -5,9 +5,8 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.NavType -import androidx.navigation.compose.composable import androidx.navigation.navArgument -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions import com.x8bit.bitwarden.ui.vault.model.VaultAddEditType private const val ADD_TYPE: String = "add" @@ -41,15 +40,11 @@ class VaultAddEditItemArgs( fun NavGraphBuilder.vaultAddEditItemDestination( onNavigateBack: () -> Unit, ) { - composable( + composableWithSlideTransitions( route = ADD_EDIT_ITEM_ROUTE, arguments = listOf( navArgument(ADD_EDIT_ITEM_TYPE) { type = NavType.StringType }, ), - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.slideDown, - popEnterTransition = TransitionProviders.Enter.slideUp, - popExitTransition = TransitionProviders.Exit.slideDown, ) { VaultAddItemScreen(onNavigateBack) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemNavigation.kt index 8e8ff3a3e..151de64b6 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemNavigation.kt @@ -5,10 +5,9 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.NavType -import androidx.navigation.compose.composable import androidx.navigation.navArgument import com.x8bit.bitwarden.data.platform.annotation.OmitFromCoverage -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions private const val VAULT_ITEM_PREFIX = "vault_item" private const val VAULT_ITEM_ID = "vault_item_id" @@ -31,15 +30,11 @@ fun NavGraphBuilder.vaultItemDestination( onNavigateBack: () -> Unit, onNavigateToVaultEditItem: (vaultItemId: String) -> Unit, ) { - composable( + composableWithSlideTransitions( route = VAULT_ITEM_ROUTE, arguments = listOf( navArgument(VAULT_ITEM_ID) { type = NavType.StringType }, ), - enterTransition = TransitionProviders.Enter.slideUp, - exitTransition = TransitionProviders.Exit.stay, - popEnterTransition = TransitionProviders.Enter.stay, - popExitTransition = TransitionProviders.Exit.slideDown, ) { VaultItemScreen( onNavigateBack = onNavigateBack, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingNavigation.kt index 51fa7e2ce..9e7d9f26c 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingNavigation.kt @@ -5,9 +5,8 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.NavType -import androidx.navigation.compose.composable import androidx.navigation.navArgument -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithPushTransitions import com.x8bit.bitwarden.ui.vault.model.VaultItemListingType private const val CARD: String = "card" @@ -48,7 +47,7 @@ fun NavGraphBuilder.vaultItemListingDestination( onNavigateToVaultItemScreen: (id: String) -> Unit, onNavigateToVaultAddItemScreen: () -> Unit, ) { - composable( + composableWithPushTransitions( route = VAULT_ITEM_LISTING_ROUTE, arguments = listOf( navArgument( @@ -63,10 +62,6 @@ fun NavGraphBuilder.vaultItemListingDestination( }, ), ), - enterTransition = TransitionProviders.Enter.pushLeft, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushLeft, - popExitTransition = TransitionProviders.Exit.pushRight, ) { VaultItemListingScreen( onNavigateBack = onNavigateBack, diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultNavigation.kt index 3d27a6fff..378f6d31a 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultNavigation.kt @@ -3,8 +3,7 @@ package com.x8bit.bitwarden.ui.vault.feature.vault import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.compose.composable -import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders +import com.x8bit.bitwarden.ui.platform.base.util.composableWithRootPushTransitions import com.x8bit.bitwarden.ui.vault.model.VaultItemListingType const val VAULT_ROUTE: String = "vault" @@ -19,12 +18,8 @@ fun NavGraphBuilder.vaultDestination( onNavigateToVaultItemListingScreen: (vaultItemType: VaultItemListingType) -> Unit, onDimBottomNavBarRequest: (shouldDim: Boolean) -> Unit, ) { - composable( + composableWithRootPushTransitions( route = VAULT_ROUTE, - enterTransition = TransitionProviders.Enter.stay, - exitTransition = TransitionProviders.Exit.pushLeft, - popEnterTransition = TransitionProviders.Enter.pushRight, - popExitTransition = TransitionProviders.Exit.fadeOut, ) { VaultScreen( onNavigateToVaultAddItemScreen = onNavigateToVaultAddItemScreen,