Skip to content

Commit f70fe07

Browse files
committed
fix: Disable pin double back nav glitch
1 parent b671a82 commit f70fe07

File tree

3 files changed

+12
-26
lines changed

3 files changed

+12
-26
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import androidx.navigation.NavController
2525
import androidx.navigation.NavDeepLink
2626
import androidx.navigation.NavGraphBuilder
2727
import androidx.navigation.NavHostController
28+
import androidx.navigation.NavOptions
2829
import androidx.navigation.NavType
2930
import androidx.navigation.compose.NavHost
3031
import androidx.navigation.compose.composable
@@ -486,11 +487,8 @@ private fun NavGraphBuilder.securitySettings(navController: NavHostController) {
486487
}
487488

488489
private fun NavGraphBuilder.disablePin(navController: NavHostController) {
489-
composableWithDefaultTransitions<Routes.DisablePin> { backStackEntry ->
490-
DisablePinScreen(
491-
navController = navController,
492-
savedStateHandle = backStackEntry.savedStateHandle,
493-
)
490+
composableWithDefaultTransitions<Routes.DisablePin> {
491+
DisablePinScreen(navController)
494492
}
495493
}
496494

@@ -708,13 +706,15 @@ fun NavController.navigateToAuthCheck(
708706
requirePin: Boolean = false,
709707
requireBiometrics: Boolean = false,
710708
onSuccessActionId: String,
709+
navOptions: NavOptions? = null,
711710
) = navigate(
712711
route = Routes.AuthCheck(
713712
showLogoOnPin = showLogoOnPin,
714713
requirePin = requirePin,
715714
requireBiometrics = requireBiometrics,
716715
onSuccessActionId = onSuccessActionId,
717716
),
717+
navOptions = navOptions,
718718
)
719719

720720
fun NavController.navigateToDefaultUnitSettings() = navigate(

app/src/main/java/to/bitkit/ui/settings/SecuritySettingsScreen.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ fun SecuritySettingsScreen(
5959
AuthCheckAction.Id.TOGGLE_PIN_ON_LAUNCH -> {
6060
app.setIsPinOnLaunchEnabled(!isPinOnLaunchEnabled)
6161
}
62+
63+
AuthCheckAction.Id.DISABLE_PIN -> {
64+
app.removePin()
65+
}
6266
}
6367
savedStateHandle.remove<String>(AuthCheckAction.KEY)
6468
}

app/src/main/java/to/bitkit/ui/settings/pin/DisablePinScreen.kt

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,16 @@ import androidx.compose.foundation.layout.height
99
import androidx.compose.foundation.layout.padding
1010
import androidx.compose.foundation.layout.size
1111
import androidx.compose.runtime.Composable
12-
import androidx.compose.runtime.LaunchedEffect
1312
import androidx.compose.ui.Alignment
1413
import androidx.compose.ui.Modifier
1514
import androidx.compose.ui.res.painterResource
1615
import androidx.compose.ui.res.stringResource
1716
import androidx.compose.ui.tooling.preview.Preview
1817
import androidx.compose.ui.unit.dp
19-
import androidx.lifecycle.SavedStateHandle
2018
import androidx.navigation.NavController
21-
import kotlinx.coroutines.flow.filterNotNull
19+
import androidx.navigation.navOptions
2220
import to.bitkit.R
23-
import to.bitkit.ui.appViewModel
21+
import to.bitkit.ui.Routes
2422
import to.bitkit.ui.components.AuthCheckAction
2523
import to.bitkit.ui.components.BodyM
2624
import to.bitkit.ui.components.PrimaryButton
@@ -35,29 +33,13 @@ import to.bitkit.ui.theme.Colors
3533
@Composable
3634
fun DisablePinScreen(
3735
navController: NavController,
38-
savedStateHandle: SavedStateHandle,
3936
) {
40-
val app = appViewModel ?: return
41-
42-
LaunchedEffect(savedStateHandle) {
43-
savedStateHandle.getStateFlow<String?>(AuthCheckAction.KEY, null)
44-
.filterNotNull()
45-
.collect { actionId ->
46-
when (actionId) {
47-
AuthCheckAction.Id.DISABLE_PIN -> {
48-
app.removePin()
49-
navController.popBackStack()
50-
}
51-
}
52-
savedStateHandle.remove<String>(AuthCheckAction.KEY)
53-
}
54-
}
55-
5637
DisablePinContent(
5738
onDisableClick = {
5839
navController.navigateToAuthCheck(
5940
requirePin = true,
6041
onSuccessActionId = AuthCheckAction.Id.DISABLE_PIN,
42+
navOptions = navOptions { popUpTo(Routes.SecuritySettings) },
6143
)
6244
},
6345
onBackClick = { navController.popBackStack() },

0 commit comments

Comments
 (0)