Skip to content

Commit a756f5e

Browse files
committed
feat: Ask biometric again on UI bg click after dismiss
1 parent 9623dc9 commit a756f5e

File tree

1 file changed

+40
-4
lines changed

1 file changed

+40
-4
lines changed

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

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,59 @@
11
package to.bitkit.ui.components
22

3+
import androidx.compose.foundation.layout.Arrangement
34
import androidx.compose.foundation.layout.Column
45
import androidx.compose.foundation.layout.Spacer
6+
import androidx.compose.foundation.layout.fillMaxSize
57
import androidx.compose.foundation.layout.height
68
import androidx.compose.foundation.layout.size
79
import androidx.compose.material3.Icon
810
import androidx.compose.runtime.Composable
11+
import androidx.compose.runtime.getValue
12+
import androidx.compose.runtime.mutableStateOf
13+
import androidx.compose.runtime.remember
14+
import androidx.compose.runtime.rememberCoroutineScope
15+
import androidx.compose.runtime.setValue
916
import androidx.compose.ui.Alignment
1017
import androidx.compose.ui.Modifier
1118
import androidx.compose.ui.res.painterResource
1219
import androidx.compose.ui.res.stringResource
20+
import androidx.compose.ui.tooling.preview.Preview
1321
import androidx.compose.ui.unit.dp
22+
import kotlinx.coroutines.delay
23+
import kotlinx.coroutines.launch
1424
import to.bitkit.R
25+
import to.bitkit.ui.shared.util.clickableAlpha
26+
import to.bitkit.ui.theme.AppThemeSurface
1527
import to.bitkit.ui.utils.BiometricPrompt
1628

1729
@Composable
1830
fun BiometricsView(
1931
onSuccess: (() -> Unit)? = null,
2032
onFailure: (() -> Unit)? = null,
2133
) {
34+
var shouldShowPrompt by remember { mutableStateOf(true) }
35+
val scope = rememberCoroutineScope()
36+
2237
Column(
2338
horizontalAlignment = Alignment.CenterHorizontally,
39+
verticalArrangement = Arrangement.Center,
40+
modifier = Modifier
41+
.fillMaxSize()
42+
.clickableAlpha {
43+
// trick to show biometric prompt again on UI click
44+
scope.launch {
45+
shouldShowPrompt = false
46+
delay(5)
47+
shouldShowPrompt = true
48+
}
49+
}
2450
) {
25-
BiometricPrompt(
26-
onSuccess = { onSuccess?.invoke() },
27-
onError = { onFailure?.invoke() },
28-
)
51+
if (shouldShowPrompt) {
52+
BiometricPrompt(
53+
onSuccess = { onSuccess?.invoke() },
54+
onError = { onFailure?.invoke() },
55+
)
56+
}
2957
Icon(
3058
painter = painterResource(R.drawable.ic_fingerprint),
3159
contentDescription = null,
@@ -40,3 +68,11 @@ fun BiometricsView(
4068
)
4169
}
4270
}
71+
72+
@Preview(showBackground = true)
73+
@Composable
74+
private fun Preview() {
75+
AppThemeSurface {
76+
BiometricsView()
77+
}
78+
}

0 commit comments

Comments
 (0)