1- import React , { useState , useCallback } from 'react' ;
2- import { Text , SafeAreaView , TouchableOpacity , StatusBar } from 'react-native' ;
1+ import React , { useState , useCallback , useEffect } from 'react' ;
2+ import {
3+ Text ,
4+ SafeAreaView ,
5+ TouchableOpacity ,
6+ StatusBar ,
7+ StyleSheet ,
8+ } from 'react-native' ;
39import RNBiometrics from 'react-native-simple-biometrics' ;
410
511const App = ( ) => {
612 const [ canAuth , setCanAuth ] = useState ( null ) ;
713 const [ authenticated , setAuthenticated ] = useState ( null ) ;
814
9- const checkCanAuth = useCallback ( async ( ) => {
10- const success = await RNBiometrics . canAuthenticate ( ) ;
11- setCanAuth ( success ) ;
15+ useEffect ( ( ) => {
16+ RNBiometrics . canAuthenticate ( ) . then ( setCanAuth ) ;
1217 } , [ ] ) ;
1318
1419 const authenticate = useCallback ( async ( ) => {
@@ -25,35 +30,54 @@ const App = () => {
2530 } , [ ] ) ;
2631
2732 return (
28- < SafeAreaView
29- style = { {
30- flex : 1 ,
31- padding : 16 ,
32- alignItems : 'center' ,
33- justifyContent : 'center' ,
34- backgroundColor : '#5e548e' ,
35- } } >
33+ < SafeAreaView style = { styles . container } >
3634 < StatusBar backgroundColor = "#fa7e61" />
37- < TouchableOpacity
38- onPress = { authenticate }
39- style = { {
40- padding : 16 ,
41- borderRadius : 8 ,
42- alignItems : 'center' ,
43- backgroundColor : '#fa7e61' ,
44- } } >
45- < Text style = { { color : 'white' , fontSize : 18 , fontWeight : 'bold' } } >
46- Bank Balance
47- </ Text >
48- < Text style = { { color : '#6F1D1B' , padding : 12 } } >
49- { authenticated ? '🔓' : '🔒' }
50- </ Text >
51- < Text style = { { color : '#6F1D1B' } } >
52- { authenticated ? '$1,000,000' : '(tap to unlock)' }
53- </ Text >
35+ < TouchableOpacity onPress = { authenticate } style = { styles . button } >
36+ < Text style = { styles . title } > Bank Balance</ Text >
37+ { canAuth ? (
38+ < >
39+ < Text style = { [ styles . subtitle , styles . amount ] } >
40+ { authenticated ? '🔓' : '🔒' }
41+ </ Text >
42+ < Text style = { styles . subtitle } >
43+ { authenticated ? '$1,000,000' : '(tap to unlock)' }
44+ </ Text >
45+ </ >
46+ ) : (
47+ < Text style = { [ styles . subtitle , styles . amount ] } >
48+ Error, can't use biometrics to authenticate
49+ </ Text >
50+ ) }
5451 </ TouchableOpacity >
5552 </ SafeAreaView >
5653 ) ;
5754} ;
5855
56+ const styles = StyleSheet . create ( {
57+ container : {
58+ flex : 1 ,
59+ padding : 16 ,
60+ alignItems : 'center' ,
61+ justifyContent : 'center' ,
62+ backgroundColor : '#5e548e' ,
63+ } ,
64+ button : {
65+ padding : 16 ,
66+ borderRadius : 8 ,
67+ alignItems : 'center' ,
68+ backgroundColor : '#fa7e61' ,
69+ } ,
70+ title : {
71+ fontSize : 18 ,
72+ color : 'white' ,
73+ fontWeight : 'bold' ,
74+ } ,
75+ subtitle : {
76+ color : '#6F1D1B' ,
77+ } ,
78+ amount : {
79+ padding : 12 ,
80+ } ,
81+ } ) ;
82+
5983export default App ;
0 commit comments