Skip to content

Commit 6d9524b

Browse files
committed
feat: Add optional backNav icon on authCheck pin view
1 parent c2ca123 commit 6d9524b

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

app/src/main/java/to/bitkit/ui/components/AuthCheckScreen.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ fun AuthCheckScreen(
3939

4040
navController.popBackStack()
4141
},
42+
onBack = { navController.popBackStack() },
4243
)
4344
}
4445

app/src/main/java/to/bitkit/ui/components/AuthCheckView.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import androidx.compose.ui.unit.dp
2828
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2929
import to.bitkit.R
3030
import to.bitkit.env.Env
31+
import to.bitkit.ui.scaffold.AppTopBar
3132
import to.bitkit.ui.theme.AppThemeSurface
3233
import to.bitkit.ui.theme.Colors
3334
import to.bitkit.ui.utils.rememberBiometricAuthSupported
@@ -41,6 +42,7 @@ fun AuthCheckView(
4142
requireBiometrics: Boolean = false,
4243
requirePin: Boolean = false,
4344
onSuccess: (() -> Unit)? = null,
45+
onBack: (() -> Unit)? = null,
4446
) {
4547
val isBiometricsEnabled by appViewModel.isBiometricEnabled.collectAsStateWithLifecycle()
4648
val attemptsRemaining by appViewModel.pinAttemptsRemaining.collectAsStateWithLifecycle()
@@ -54,6 +56,7 @@ fun AuthCheckView(
5456
requirePin = requirePin,
5557
validatePin = appViewModel::validatePin,
5658
onSuccess = onSuccess,
59+
onBack = onBack,
5760
)
5861
}
5962

@@ -67,6 +70,7 @@ private fun AuthCheckViewContent(
6770
requirePin: Boolean = false,
6871
validatePin: (String) -> Boolean,
6972
onSuccess: (() -> Unit)? = null,
73+
onBack: (() -> Unit)?,
7074
) {
7175
var showBio by rememberSaveable { mutableStateOf(isBiometricsEnabled) }
7276

@@ -89,10 +93,11 @@ private fun AuthCheckViewContent(
8993
PinPad(
9094
showLogo = showLogoOnPin,
9195
validatePin = validatePin,
92-
onSuccess = onSuccess,
9396
attemptsRemaining = attemptsRemaining,
9497
allowBiometrics = isBiometricsEnabled && isBiometrySupported && !requirePin,
9598
onShowBiometrics = { showBio = true },
99+
onSuccess = onSuccess,
100+
onBack = onBack,
96101
)
97102
}
98103
}
@@ -102,10 +107,11 @@ private fun AuthCheckViewContent(
102107
private fun PinPad(
103108
showLogo: Boolean = false,
104109
validatePin: (String) -> Boolean,
105-
onSuccess: (() -> Unit)?,
106110
attemptsRemaining: Int,
107111
allowBiometrics: Boolean,
108112
onShowBiometrics: () -> Unit,
113+
onSuccess: (() -> Unit)?,
114+
onBack: (() -> Unit)? = null,
109115
) {
110116
var pin by remember { mutableStateOf("") }
111117
val isLastAttempt = attemptsRemaining == 1
@@ -122,6 +128,7 @@ private fun PinPad(
122128
Column(
123129
horizontalAlignment = Alignment.CenterHorizontally,
124130
) {
131+
AppTopBar(titleText = " ", onBackClick = onBack)
125132
Box(
126133
contentAlignment = Alignment.BottomCenter,
127134
modifier = Modifier.weight(1f)
@@ -200,6 +207,7 @@ private fun PreviewBio() {
200207
AppThemeSurface {
201208
AuthCheckViewContent(
202209
onSuccess = {},
210+
onBack = {},
203211
isBiometricsEnabled = true,
204212
isBiometrySupported = true,
205213
showLogoOnPin = true,
@@ -215,6 +223,7 @@ private fun PreviewPin() {
215223
AppThemeSurface {
216224
AuthCheckViewContent(
217225
onSuccess = {},
226+
onBack = {},
218227
isBiometricsEnabled = false,
219228
isBiometrySupported = true,
220229
showLogoOnPin = true,
@@ -230,6 +239,7 @@ private fun PreviewPinAttempts() {
230239
AppThemeSurface {
231240
AuthCheckViewContent(
232241
onSuccess = {},
242+
onBack = null,
233243
isBiometricsEnabled = false,
234244
isBiometrySupported = true,
235245
showLogoOnPin = false,
@@ -245,6 +255,7 @@ private fun PreviewPinAttemptLast() {
245255
AppThemeSurface {
246256
AuthCheckViewContent(
247257
onSuccess = {},
258+
onBack = {},
248259
isBiometricsEnabled = false,
249260
isBiometrySupported = true,
250261
showLogoOnPin = true,

app/src/main/java/to/bitkit/ui/scaffold/AppTopBar.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,16 @@ import to.bitkit.ui.components.Title
2727
@OptIn(ExperimentalMaterial3Api::class)
2828
fun AppTopBar(
2929
titleText: String,
30-
onBackClick: () -> Unit,
30+
onBackClick: (() -> Unit)?,
3131
icon: Painter? = null,
32-
navigationIcon: @Composable () -> Unit = backNavIcon(onBackClick),
3332
actions: @Composable (RowScope.() -> Unit) = {},
3433
) {
3534
CenterAlignedTopAppBar(
36-
navigationIcon = navigationIcon,
35+
navigationIcon = {
36+
if (onBackClick != null) {
37+
BackNavIcon(onBackClick)
38+
}
39+
},
3740
title = {
3841
Row(
3942
verticalAlignment = Alignment.CenterVertically,
@@ -60,8 +63,10 @@ fun AppTopBar(
6063
)
6164
}
6265

63-
private fun backNavIcon(onBackClick: () -> Unit) = @Composable {
64-
IconButton(onClick = onBackClick) {
66+
// TODO use everywhere
67+
@Composable
68+
fun BackNavIcon(onClick: () -> Unit) {
69+
IconButton(onClick = onClick) {
6570
Icon(
6671
imageVector = Icons.AutoMirrored.Default.ArrowBack,
6772
contentDescription = stringResource(R.string.common__back),

0 commit comments

Comments
 (0)