Skip to content

Commit b2e8b70

Browse files
committed
fix: clear backstack on critical update navigation
1 parent fe8b2d9 commit b2e8b70

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

app/src/main/java/to/bitkit/ui/ContentView.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ fun ContentView(
127127
appViewModel.mainScreenEffect.collect {
128128
when (it) {
129129
is MainScreenEffect.Navigate -> navigator.navigate(it.route)
130+
is MainScreenEffect.NavigateAndClearBackstack -> navigator.navigateAndClearBackstack(it.route)
130131
is MainScreenEffect.ProcessClipboardAutoRead -> {
131132
if (!navigator.isAtHome()) {
132133
navigator.navigateToHome()

app/src/main/java/to/bitkit/ui/nav/Navigator.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ class Navigator(@PublishedApi internal val backStack: NavBackStack<NavKey>) {
5050

5151
fun isAtHome(): Boolean = backStack.lastOrNull() is Routes.Home
5252

53+
fun navigateAndClearBackstack(route: Routes) {
54+
backStack.clear()
55+
backStack.add(route)
56+
}
57+
5358
fun shouldShowTabBar(): Boolean = when (backStack.lastOrNull()) {
5459
is Routes.Home, is Routes.Savings, is Routes.Spending, is Routes.Activity.All -> true
5560
else -> false

app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1710,7 +1710,7 @@ class AppViewModel @Inject constructor(
17101710
if (androidReleaseInfo.buildNumber <= currentBuildNumber) return@withContext
17111711

17121712
if (androidReleaseInfo.isCritical) {
1713-
mainScreenEffect(MainScreenEffect.Navigate(Routes.CriticalUpdate))
1713+
mainScreenEffect(MainScreenEffect.NavigateAndClearBackstack(Routes.CriticalUpdate))
17141714
}
17151715
}.onFailure { e ->
17161716
Logger.warn("Failure fetching new releases", e = e, context = TAG)
@@ -1784,6 +1784,7 @@ sealed class SendEffect {
17841784

17851785
sealed class MainScreenEffect {
17861786
data class Navigate(val route: Routes) : MainScreenEffect()
1787+
data class NavigateAndClearBackstack(val route: Routes) : MainScreenEffect()
17871788
data object WipeWallet : MainScreenEffect()
17881789
data class ProcessClipboardAutoRead(val data: String) : MainScreenEffect()
17891790
}

0 commit comments

Comments
 (0)