From ae72807208f24d80386183008347276af1de6c7f Mon Sep 17 00:00:00 2001 From: mariiapanasetskaia Date: Tue, 14 Apr 2026 11:47:37 +0200 Subject: [PATCH 1/3] save nav state --- .../main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt b/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt index 4be511fee9..077ddd8c40 100644 --- a/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt +++ b/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt @@ -196,6 +196,7 @@ internal class HedvigAppState( */ fun navigateToLoggedIn() { navController.navigate(RootGraph) { + restoreState = true typedPopUpTo { inclusive = true } @@ -203,12 +204,17 @@ internal class HedvigAppState( } fun navigateToLoggedOut() { + val currentDestinationRoute = navController.currentDestination?.route + val isLoggingOutFromProfile = currentDestinationRoute == + "com.hedvig.android.feature.profile.navigation.ProfileDestination.Profile" + // navController.currentDestination.toTopLevelAppDestination() todo: probably add this check too for (entry in TopLevelGraph.entries) { navController.typedClearBackStack(entry.destination) } navController.navigate(LoginDestination) { typedPopUpTo { inclusive = true + saveState = !isLoggingOutFromProfile } } } From 6220c27404746f8bdd58053b604afb1d7b59f6fa Mon Sep 17 00:00:00 2001 From: mariiapanasetskaia Date: Wed, 15 Apr 2026 13:10:18 +0200 Subject: [PATCH 2/3] remove comment --- .../kotlin/com/hedvig/android/app/ui/HedvigAppState.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt b/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt index 077ddd8c40..02688b6552 100644 --- a/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt +++ b/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt @@ -205,9 +205,8 @@ internal class HedvigAppState( fun navigateToLoggedOut() { val currentDestinationRoute = navController.currentDestination?.route - val isLoggingOutFromProfile = currentDestinationRoute == - "com.hedvig.android.feature.profile.navigation.ProfileDestination.Profile" - // navController.currentDestination.toTopLevelAppDestination() todo: probably add this check too + val isLoggingOutFromProfile = currentDestinationRoute == profileDestinationRoute + for (entry in TopLevelGraph.entries) { navController.typedClearBackStack(entry.destination) } @@ -219,6 +218,8 @@ internal class HedvigAppState( } } + private val profileDestinationRoute = "com.hedvig.android.feature.profile.navigation.ProfileDestination.Profile" + val darkTheme: Boolean @Composable get() { From c6de1e0133c9e86f64076c3ff33dcbee3643578b Mon Sep 17 00:00:00 2001 From: mariiapanasetskaia Date: Thu, 16 Apr 2026 11:07:06 +0200 Subject: [PATCH 3/3] safe way of storing the profile destination --- .../kotlin/com/hedvig/android/app/ui/HedvigAppState.kt | 9 ++++----- .../feature/profile/navigation/ProfileDestinations.kt | 6 ++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt b/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt index 02688b6552..843328d3c8 100644 --- a/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt +++ b/app/app/src/main/kotlin/com/hedvig/android/app/ui/HedvigAppState.kt @@ -34,6 +34,7 @@ import com.hedvig.android.feature.insurances.navigation.insurancesCrossSellBotto import com.hedvig.android.feature.login.navigation.LoginDestination import com.hedvig.android.feature.payments.navigation.PaymentsDestination import com.hedvig.android.feature.profile.navigation.ProfileDestination +import com.hedvig.android.feature.profile.navigation.destinationToExcludeFromSavingState import com.hedvig.android.feature.profile.navigation.profileBottomNavPermittedDestinations import com.hedvig.android.feature.travelcertificate.navigation.travelCertificateCrossSellBottomSheetPermittingDestinations import com.hedvig.android.featureflags.FeatureManager @@ -204,8 +205,9 @@ internal class HedvigAppState( } fun navigateToLoggedOut() { - val currentDestinationRoute = navController.currentDestination?.route - val isLoggingOutFromProfile = currentDestinationRoute == profileDestinationRoute + + val isLoggingOutFromProfile = navController.currentDestination + ?.typedHasRoute(destinationToExcludeFromSavingState) ?: false for (entry in TopLevelGraph.entries) { navController.typedClearBackStack(entry.destination) @@ -217,9 +219,6 @@ internal class HedvigAppState( } } } - - private val profileDestinationRoute = "com.hedvig.android.feature.profile.navigation.ProfileDestination.Profile" - val darkTheme: Boolean @Composable get() { diff --git a/app/feature/feature-profile/src/main/kotlin/com/hedvig/android/feature/profile/navigation/ProfileDestinations.kt b/app/feature/feature-profile/src/main/kotlin/com/hedvig/android/feature/profile/navigation/ProfileDestinations.kt index f52864bac1..f80825f104 100644 --- a/app/feature/feature-profile/src/main/kotlin/com/hedvig/android/feature/profile/navigation/ProfileDestinations.kt +++ b/app/feature/feature-profile/src/main/kotlin/com/hedvig/android/feature/profile/navigation/ProfileDestinations.kt @@ -43,3 +43,9 @@ internal sealed interface SettingsDestinations { val profileBottomNavPermittedDestinations: List> = listOf( ProfileDestinations.Eurobonus::class, ) + +/* +* Not saving navigation state when explicitly logging out from Profile +*/ +val destinationToExcludeFromSavingState: KClass = ProfileDestination.Profile::class +