Merge remote-tracking branch 'upstream/develop' into inji-214

This commit is contained in:
Dhivya
2023-08-17 18:38:43 +05:30
22 changed files with 152 additions and 60 deletions

View File

@@ -12,5 +12,6 @@
"PRESENCE_VERIFICATION_FAILED": "verification failed",
"QRLOGIN_SUCCESFULL": "QRLogin successful",
"WALLET_BINDING_SUCCESSFULL": "Activation successful",
"WALLET_BINDING_FAILURE": "Activation failed"
"WALLET_BINDING_FAILURE": "Activation failed",
"VC_REMOVED":"Removed from wallet"
}

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { BottomSheet, Icon, ListItem } from 'react-native-elements';
import { Icon, ListItem, Overlay } from 'react-native-elements';
import { Theme } from '../components/ui/styleUtils';
import { Centered, Column, Row, Text } from '../components/ui';
import { Column, Row, Text } from '../components/ui';
import { WalletBinding } from '../screens/Home/MyVcs/WalletBinding';
import { Pressable } from 'react-native';
import { useKebabPopUp } from './KebabPopUpController';
@@ -21,9 +21,10 @@ export const KebabPopUp: React.FC<KebabPopUpProps> = (props) => {
type={props.iconType}
color={Theme.Colors.GrayIcon}
/>
<BottomSheet
<Overlay
isVisible={props.isVisible}
containerStyle={Theme.KebabPopUpStyles.kebabPopUp}>
onBackdropPress={props.onDismiss}
overlayStyle={Theme.KebabPopUpStyles.kebabPopUp}>
<Row style={Theme.KebabPopUpStyles.kebabHeaderStyle}>
<Text weight="bold">{t('title')}</Text>
<Icon
@@ -78,7 +79,7 @@ export const KebabPopUp: React.FC<KebabPopUpProps> = (props) => {
onCancel={controller.CANCEL}
/>
</Column>
</BottomSheet>
</Overlay>
</Column>
);
};

View File

@@ -732,12 +732,12 @@ export const DefaultTheme = {
}),
KebabPopUpStyles: StyleSheet.create({
kebabPopUp: {
marginHorizontal: 4,
borderTopLeftRadius: 15,
borderTopRightRadius: 15,
width: Dimensions.get('screen').width,
marginTop: Dimensions.get('screen').height * 0.55,
},
kebabHeaderStyle: {
backgroundColor: Colors.White,
borderTopLeftRadius: 24,
borderTopRightRadius: 24,
justifyContent: 'space-between',
fontFamily: 'Inter_700Bold',
paddingRight: 15,

View File

@@ -734,12 +734,12 @@ export const PurpleTheme = {
}),
KebabPopUpStyles: StyleSheet.create({
kebabPopUp: {
marginHorizontal: 4,
borderTopLeftRadius: 15,
borderTopRightRadius: 15,
width: Dimensions.get('screen').width,
marginTop: Dimensions.get('screen').height * 0.55,
},
kebabHeaderStyle: {
backgroundColor: Colors.White,
borderTopLeftRadius: 24,
borderTopRightRadius: 24,
justifyContent: 'space-between',
fontFamily: 'Inter_700Bold',
paddingRight: 15,

View File

@@ -662,7 +662,7 @@ SPEC CHECKSUMS:
EXUpdates: a83e036243b0f6ece53a8c1cb883b6751c88a5f8
EXUpdatesInterface: a9814f422d3cd6e7cfd260d13c27786148ece20e
FBLazyVector: fa8275d5086566e22a26ddc385ab5772e7f9b1bd
FBReactNativeSpec: 83986f2cb6a4046f24310b93812514ab1ccccb72
FBReactNativeSpec: 6f212f070a71c07e30cb92356459dd3a148a064e
glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
GoogleInterchangeUtilities: d5bc4d88d5b661ab72f9d70c58d02ca8c27ad1f7
GoogleNetworkingUtilities: 3edd3a8161347494f2da60ea0deddc8a472d94cb

View File

@@ -13,7 +13,8 @@
"PRESENCE_VERIFICATION_FAILED": "فشل التحقق",
"QRLOGIN_SUCCESFULL": "QRL تم تسجيل الدخول بنجاح",
"WALLET_BINDING_SUCCESSFULL": "تفعيل ناجحة",
"WALLET_BINDING_FAILURE": "فشل التفعيل"
"WALLET_BINDING_FAILURE": "فشل التفعيل",
"VC_REMOVED":"تمت إزالته من المحفظة"
},
"DeviceInfoList": {
"requestedBy": "مطلوب بواسطة",
@@ -273,7 +274,9 @@
"stepThreeText": "شارك بطاقاتك بأمان وبطريقة خالية من المتاعب واستفد من الخدمات المتنوعة.",
"stepFourTitle": "مصادقة خالية من المتاعب",
"stepFourText": "قم بمصادقة نفسك بسهولة باستخدام بيانات الاعتماد الرقمية المخزنة.",
"stepFourButton": "البدء",
"getStarted": "البدء",
"goBack": "عُد",
"back": "خلف",
"skip": "يتخطى",
"next": "التالي"
},

View File

@@ -13,7 +13,8 @@
"PRESENCE_VERIFICATION_FAILED": "verification failed",
"QRLOGIN_SUCCESFULL": "QRLogin successful",
"WALLET_BINDING_SUCCESSFULL": "Activation successful",
"WALLET_BINDING_FAILURE": "Activation failed"
"WALLET_BINDING_FAILURE": "Activation failed",
"VC_REMOVED":"Removed from wallet"
},
"DeviceInfoList": {
"requestedBy": "Requested by",
@@ -57,7 +58,7 @@
"enableVerification": "Activate",
"profileAuthenticated": "Profile is authenticated!",
"offlineAuthDisabledHeader": "Offline Authentication disabled!",
"offlineAuthDisabledMessage": "Click 'Enable Authentication' to enable this credentials to be used for offline authentication.",
"offlineAuthDisabledMessage": "Click on 'Activate' to enable this credentials to be used for offline authentication.",
"verificationEnabledSuccess": "Activated for online login",
"goback": "GO BACK",
"BindingWarning": "If you have enabled verification for this credential on another wallet, it will get overridden. Do you want to proceed?",
@@ -273,7 +274,9 @@
"stepThreeText": "Share your cards securely in a hassle free way and avail various services.",
"stepFourTitle": "Hassle free authentication",
"stepFourText": "Authenticate yourself with ease using the stored digital credential.",
"stepFourButton": "Get Started",
"getStarted": "Get Started",
"goBack": "Go Back",
"back": "Back",
"skip": "Skip",
"next": "Next"
},

View File

@@ -13,7 +13,8 @@
"PRESENCE_VERIFICATION_FAILED": "nabigo ang pag-verify",
"QRLOGIN_SUCCESFULL": "Matagumpay ang QRLogin",
"WALLET_BINDING_SUCCESSFULL": "Matagumpay ang pag-activate",
"WALLET_BINDING_FAILURE": "Nabigo ang pag-activate"
"WALLET_BINDING_FAILURE": "Nabigo ang pag-activate",
"VC_REMOVED":"Inalis sa wallet"
},
"DeviceInfoList": {
"requestedBy": "Hiniling ni",
@@ -273,7 +274,9 @@
"stepThreeText": "Kapag nabuo na, ang card ay ligtas na iniimbak sa iyong mobile.",
"stepFourTitle": "Walang problema sa pagpapatotoo",
"stepFourText": "I-authenticate ang iyong sarili nang madali gamit ang nakaimbak na digital na kredensyal.",
"stepFourButton": "Magsimulas",
"getStarted": "Magsimula",
"goBack": "bumalik ka",
"back": "Bumalik",
"skip": "Laktawan",
"next": "Susunod"
},

View File

@@ -13,7 +13,8 @@
"PRESENCE_VERIFICATION_FAILED": "सत्यापन असफल",
"QRLOGIN_SUCCESFULL": "क्यूआरलॉगिन सफल",
"WALLET_BINDING_SUCCESSFULL": "सक्रियण सफल",
"WALLET_BINDING_FAILURE": "सक्रियकरण असफल"
"WALLET_BINDING_FAILURE": "सक्रियकरण असफल",
"VC_REMOVED":"वॉलेट से हटाया गया"
},
"DeviceInfoList": {
"requestedBy": "द्वारा अनुरोध किया गया",
@@ -81,7 +82,7 @@
"offlineAuthenticationDisabled!": "ऑफ़लाइन प्रमाणीकरण अक्षम!",
"offlineAuthDisabledMessage": "इस क्रेडेंशियल को ऑफ़लाइन प्रमाणीकरण के लिए उपयोग करने के लिए यहां क्लिक करें।",
"viewActivityLog": "गतिविधि लॉग देखें",
"removeFromWallet": "बटुए से निकालें",
"removeFromWallet": "वॉलेट से हटाए",
"revokeId": "आईडी निरस्त करें",
"revokeMessage": "इस प्रोफ़ाइल के लिए वर्चुअल आईडी निरस्त करें"
},
@@ -271,7 +272,9 @@
"stepThreeText": "परेशानी मुक्त तरीके से अपने कार्ड सुरक्षित रूप से साझा करें और विभिन्न सेवाओं का लाभ उठाएं।",
"stepFourTitle": "परेशानी मुक्त प्रमाणीकरण",
"stepFourText": "संग्रहीत डिजिटल क्रेडेंशियल का उपयोग करके आसानी से स्वयं को प्रमाणित करें।",
"stepFourButton": "शुरू हो जाओ",
"getStarted": "शुरू करें",
"goBack": "वापस जाओ",
"back": "पीछे",
"skip": "छोडना",
"next": "अगला"
},
@@ -290,7 +293,7 @@
"rename": "नाम बदलें",
"delete": "मिटाना",
"revoke": "रद्द करना",
"revoking": "आपके वॉलेट में VID {{vid}} के साथ एक क्रेडेंशियल है। इसे रद्द करने से यह अपने आप बटुए से हट जाएगा। क्या आप सुनिश्चित रूप से आगे बढ़ना चाहते हैं?",
"revoking": "आपके वॉलेट में VID {{vid}} के साथ एक क्रेडेंशियल है। इसे रद्द करने से यह अपने आप वॉलेट से हट जाएगा। क्या आप सुनिश्चित रूप से आगे बढ़ना चाहते हैं?",
"requestingOtp": "ओटीपी का अनुरोध...",
"editTag": "नाम बदलें",
"redirecting": "पुन: निर्देशित...",

View File

@@ -13,7 +13,8 @@
"PRESENCE_VERIFICATION_FAILED": "ಪರಿಶೀಲನೆ ವಿಫಲವಾಗಿದೆ",
"QRLOGIN_SUCCESFULL": "QRಲಾಗಿನ್ ಯಶಸ್ವಿಯಾಗಿದೆ",
"WALLET_BINDING_SUCCESSFULL": "ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ಯಶಸ್ವಿಯಾಗಿದೆ",
"WALLET_BINDING_FAILURE": "ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ವಿಫಲವಾಗಿದೆ"
"WALLET_BINDING_FAILURE": "ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ವಿಫಲವಾಗಿದೆ",
"VC_REMOVED":"ಕೈಚೀಲದಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"
},
"DeviceInfoList": {
"requestedBy": "ವಿನಂತಿಸಿದವರು",
@@ -269,7 +270,9 @@
"stepThreeText": "ನಿಮ್ಮ ಕಾರ್ಡ್‌ಗಳನ್ನು ಜಗಳ ಮುಕ್ತ ರೀತಿಯಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿ ಹಂಚಿಕೊಳ್ಳಿ ಮತ್ತು ವಿವಿಧ ಸೇವೆಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ.",
"stepFourTitle": "ಜಗಳ ಮುಕ್ತ ದೃಢೀಕರಣ",
"stepFourText": "ಸಂಗ್ರಹಿಸಿದ ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸುಲಭವಾಗಿ ನಿಮ್ಮನ್ನು ದೃಢೀಕರಿಸಿ.",
"stepFourButton": "ಪ್ರಾರಂಭಿಸಿ",
"getStarted": "ಪ್ರಾರಂಭಿಸಿ",
"goBack": "ಹಿಂದೆ ಹೋಗು",
"back": "ಹಿಂದೆ",
"skip": "ಬಿಟ್ಟುಬಿಡಿ",
"next": "ಮುಂದೆ"
},

View File

@@ -13,7 +13,8 @@
"PRESENCE_VERIFICATION_FAILED": "falló la verificación",
"QRLOGIN_SUCCESFULL": "Inicio de sesión QR exitoso",
"WALLET_BINDING_SUCCESSFULL": "Activación exitosa",
"WALLET_BINDING_FAILURE": "Activación fallida"
"WALLET_BINDING_FAILURE": "Activación fallida",
"VC_REMOVED":"Eliminado de la billetera"
},
"DeviceInfoList": {
"requestedBy": "Solicitado por",
@@ -300,6 +301,7 @@
}
},
"RequestScreen": {
"receiveCard": "Recibir tarjeta",
"bluetoothDenied": "Por favor, activa el Bluetooth para poder solicitar la tarjeta",
"bluetoothStateAndroid": "Por favor, activa el Bluetooth desde la configuración rápida para admitir el intercambio local",
"bluetoothStateIos": "Por favor, activa el Bluetooth desde el centro de control para admitir el intercambio local",

View File

@@ -13,7 +13,8 @@
"PRESENCE_VERIFICATION_FAILED": "சரிபார்ப்பு தோல்வியடைந்தது",
"QRLOGIN_SUCCESFULL": "QRஉள்நுழைவு வெற்றிகரமாக உள்ளது",
"WALLET_BINDING_SUCCESSFULL": "செயல்படுத்தல் வெற்றி",
"WALLET_BINDING_FAILURE": "செயல்படுத்துவதில் தோல்வி"
"WALLET_BINDING_FAILURE": "செயல்படுத்துவதில் தோல்வி",
"VC_REMOVED": "பணப்பையிலிருந்து அகற்றப்பட்டது"
},
"DeviceInfoList": {
"requestedBy": "கோரியவர்",
@@ -269,7 +270,9 @@
"stepThreeText": "தொந்தரவு இல்லாத வகையில் உங்கள் கார்டுகளைப் பாதுகாப்பாகப் பகிர்ந்து, பல்வேறு சேவைகளைப் பெறுங்கள்.",
"stepFourTitle": "தொந்தரவு இல்லாத அங்கீகாரம்",
"stepFourText": "சேமிக்கப்பட்ட டிஜிட்டல் நற்சான்றிதழைப் பயன்படுத்தி உங்களை எளிதாக அங்கீகரிக்கவும்.",
"stepFourButton": "தொடங்குங்கள்",
"getStarted": "தொடங்குங்கள்",
"goBack": "திரும்பி போ",
"back": "மீண்டும்",
"skip": "தவிர்க்கவும்",
"next": "அடுத்தது"
},

View File

@@ -133,7 +133,8 @@ export type ActivityLogType =
| 'PRESENCE_VERIFICATION_FAILED'
| 'QRLOGIN_SUCCESFULL'
| 'WALLET_BINDING_SUCCESSFULL'
| 'WALLET_BINDING_FAILURE';
| 'WALLET_BINDING_FAILURE'
| 'VC_REMOVED';
type State = StateFrom<typeof activityLogMachine>;

View File

@@ -32,7 +32,7 @@ const model = createModel(
info: {} as AppInfo,
backendInfo: {} as BackendInfo,
serviceRefs: {} as AppServices,
isReadError: true,
isReadError: false,
isDecryptError: false,
isKeyInvalidateError: false,
},

View File

@@ -47,6 +47,8 @@ const model = createModel(
) => ({
credentialRegistryResponse: credentialRegistryResponse,
}),
INJI_TOUR_GUIDE: () => ({}),
BACK: () => ({}),
CANCEL: () => ({}),
ACCEPT_HARDWARE_SUPPORT_NOT_EXISTS: () => ({}),
},
@@ -88,6 +90,7 @@ export const settingsMachine = model.createMachine(
},
},
idle: {
entry: ['injiTourGuide'],
on: {
TOGGLE_BIOMETRIC_UNLOCK: {
actions: ['toggleBiometricUnlock', 'storeContext'],
@@ -137,6 +140,20 @@ export const settingsMachine = model.createMachine(
},
},
},
injiTourGuide: {
on: {
INJI_TOUR_GUIDE: {
target: 'showInjiTourGuide',
},
},
},
showInjiTourGuide: {
on: {
BACK: {
target: 'idle',
},
},
},
},
},
{

View File

@@ -18,12 +18,18 @@ export interface Typegen0 {
resetInjiProps: 'done.invoke.settings.resetInjiProps:invocation[0]';
};
'missingImplementations': {
actions: never;
actions: 'injiTourGuide';
delays: never;
guards: never;
services: never;
};
'eventsCausingActions': {
injiTourGuide:
| 'BACK'
| 'CANCEL'
| 'STORE_RESPONSE'
| 'done.invoke.settings.resetInjiProps:invocation[0]'
| 'error.platform.settings.resetInjiProps:invocation[0]';
requestStoredContext: 'xstate.init';
resetCredentialRegistry: 'CANCEL' | 'UPDATE_CREDENTIAL_REGISTRY';
setContext: 'STORE_RESPONSE';
@@ -52,6 +58,12 @@ export interface Typegen0 {
'eventsCausingServices': {
resetInjiProps: 'UPDATE_CREDENTIAL_REGISTRY';
};
'matchesStates': 'idle' | 'init' | 'resetInjiProps' | 'storingDefaults';
'matchesStates':
| 'idle'
| 'init'
| 'injiTourGuide'
| 'resetInjiProps'
| 'showInjiTourGuide'
| 'storingDefaults';
'tags': never;
}

View File

@@ -427,7 +427,7 @@ export const vcItemMachine =
entry: 'removeVcItem',
on: {
STORE_RESPONSE: {
actions: ['removedVc', log('removing Vc')],
actions: ['removedVc', 'logVCremoved'],
target: '#vc-item',
},
},
@@ -1047,16 +1047,26 @@ export const vcItemMachine =
{ to: (context) => context.serviceRefs.store }
),
loadMyVcs: send(StoreEvents.GET(MY_VCS_STORE_KEY), {
to: (context) => context.serviceRefs.store,
}),
removeVcItem: send(
(_context, event) => {
return StoreEvents.REMOVE(MY_VCS_STORE_KEY, _context.vcKey);
},
{ to: (context) => context.serviceRefs.store }
),
logVCremoved: send(
(context, _) =>
ActivityLogEvents.LOG_ACTIVITY({
_vcKey: VC_ITEM_STORE_KEY(context),
type: 'VC_REMOVED',
timestamp: Date.now(),
deviceName: '',
vcLabel: context.id,
}),
{
to: (context) => context.serviceRefs.activityLog,
}
),
},
services: {

View File

@@ -68,11 +68,19 @@ export const IntroSlidersScreen: React.FC<RootRouteProps> = (props) => {
flex: 1,
alignItems: 'flex-end',
}}>
<Button
type="plain"
title={t('skip')}
onPress={controller.NEXT}
/>
{controller.isPasscodeSet() ? (
<Button
type="plain"
title={t('skip')}
onPress={controller.NEXT}
/>
) : (
<Button
type="plain"
title={t('back')}
onPress={controller.BACK}
/>
)}
</Column>
</Row>
<Image source={item.image} />
@@ -122,7 +130,7 @@ export const IntroSlidersScreen: React.FC<RootRouteProps> = (props) => {
align="center"
color="#FFFFFF"
margin="15 0 0 0">
{t('stepFourButton')}
{controller.isPasscodeSet() ? t('getStarted') : t('goBack')}
</Text>
</LinearGradient>
</View>
@@ -144,7 +152,9 @@ export const IntroSlidersScreen: React.FC<RootRouteProps> = (props) => {
}}
dotStyle={{ backgroundColor: Theme.Colors.dotColor, marginBottom: 90 }}
renderItem={renderItem}
onDone={() => controller.NEXT()}
onDone={() =>
controller.isPasscodeSet() ? controller.NEXT() : controller.BACK()
}
/>
</View>
);

View File

@@ -50,7 +50,7 @@ export const ReceivedCards: React.FC<HomeScreenTabProps> = (props) => {
vcKey={vcKey}
margin="0 2 8 2"
isSharingVc
onPress={controller.VIEW_VC}
onPress={() => {}}
/>
))}
{controller.vcKeys.length === 0 && (

View File

@@ -13,7 +13,7 @@ import { Modal } from '../../components/ui/Modal';
import { CREDENTIAL_REGISTRY_EDIT } from 'react-native-dotenv';
import { AboutInji } from './AboutInji';
import { EditableListItem } from '../../components/EditableListItem';
import { RequestRouteProps } from '../../routes';
import { RequestRouteProps, RootRouteProps } from '../../routes';
import { ReceivedCards } from './ReceivedCards';
const LanguageSetting: React.FC = () => {
@@ -47,9 +47,9 @@ const LanguageSetting: React.FC = () => {
);
};
export const SettingScreen: React.FC<SettingProps & RequestRouteProps> = (
props
) => {
export const SettingScreen: React.FC<
SettingProps & RootRouteProps & RequestRouteProps
> = (props) => {
const { t } = useTranslation('SettingScreen');
const controller = useSettingsScreen(props);
@@ -154,13 +154,11 @@ export const SettingScreen: React.FC<SettingProps & RequestRouteProps> = (
progress={controller.isResetInjiProps}
/>
)}
{/*
<ListItem
topDivider
bottomDivider
onPress={() => {
Linking.openURL(helpUrl);
}}>
onPress={() => controller.INJI_TOUR_GUIDE()}>
<Icon
type={'antdesign'}
name={'book'}
@@ -176,7 +174,6 @@ export const SettingScreen: React.FC<SettingProps & RequestRouteProps> = (
</ListItem.Title>
</ListItem.Content>
</ListItem>
*/}
<ListItem onPress={controller.LOGOUT}>
<Icon

View File

@@ -27,9 +27,9 @@ import {
import { GlobalContext } from '../../shared/GlobalContext';
import { useTranslation } from 'react-i18next';
import { Platform } from 'react-native';
import { RequestRouteProps } from '../../routes';
import { RequestRouteProps, RootRouteProps } from '../../routes';
export function useSettingsScreen(props: RequestRouteProps) {
export function useSettingsScreen(props: RootRouteProps & RequestRouteProps) {
const { appService } = useContext(GlobalContext);
const authService = appService.children.get('auth');
const settingsService = appService.children.get('settings');
@@ -143,6 +143,12 @@ export function useSettingsScreen(props: RequestRouteProps) {
setIsVisible(false);
},
INJI_TOUR_GUIDE: () => {
settingsService.send(SettingsEvents.INJI_TOUR_GUIDE()),
props.navigation.navigate('IntroSliders'),
setIsVisible(false);
},
TOGGLE_BIOMETRIC: (enable: boolean) =>
settingsService.send(SettingsEvents.TOGGLE_BIOMETRIC_UNLOCK(enable)),

View File

@@ -7,7 +7,10 @@ import {
selectPasscode,
selectSettingUp,
} from '../machines/auth';
import { selectBiometricUnlockEnabled } from '../machines/settings';
import {
SettingsEvents,
selectBiometricUnlockEnabled,
} from '../machines/settings';
import { RootRouteProps } from '../routes';
import { GlobalContext } from '../shared/GlobalContext';
@@ -18,6 +21,15 @@ export function useWelcomeScreen(props: RootRouteProps) {
const isSettingUp = useSelector(authService, selectSettingUp);
const passcode = useSelector(authService, selectPasscode);
const isPasscodeSet = () => {
if (passcode) {
return false;
} else {
return true;
}
};
const biometrics = useSelector(authService, selectBiometrics);
const isLanguagesetup = useSelector(authService, selectLanguagesetup);
const isBiometricUnlockEnabled = useSelector(
@@ -28,6 +40,7 @@ export function useWelcomeScreen(props: RootRouteProps) {
return {
isSettingUp,
isLanguagesetup,
isPasscodeSet,
NEXT: () => {
authService.send(AuthEvents.NEXT()), props.navigation.navigate('Auth');
},
@@ -35,6 +48,10 @@ export function useWelcomeScreen(props: RootRouteProps) {
authService.send(AuthEvents.SELECT()),
props.navigation.navigate('IntroSliders');
},
BACK: () => {
settingsService.send(SettingsEvents.BACK()),
props.navigation.navigate('Main');
},
unlockPage: () => {
// prioritize biometrics
if (!isSettingUp && isBiometricUnlockEnabled && biometrics !== '') {