import React, { useRef, useState } from 'react'; import * as Haptics from 'expo-haptics'; import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import Base, { IBase } from './Base'; import { TYPE } from './constants'; import I18n from '../../i18n'; interface IPasscodeChoose { force?: boolean; finishProcess: Function; } const PasscodeChoose = ({ finishProcess, force = false }: IPasscodeChoose) => { const chooseRef = useRef(null); const confirmRef = useRef(null); const [subtitle, setSubtitle] = useState(null); const [status, setStatus] = useState(TYPE.CHOOSE); const [previousPasscode, setPreviouPasscode] = useState(''); const firstStep = (p: string) => { setTimeout(() => { setStatus(TYPE.CONFIRM); setPreviouPasscode(p); confirmRef?.current?.clearPasscode(); }, 200); }; const changePasscode = (p: string) => finishProcess && finishProcess(p); const onError = () => { setTimeout(() => { setStatus(TYPE.CHOOSE); setSubtitle(I18n.t('Passcode_choose_error')); chooseRef?.current?.animate('shake'); chooseRef?.current?.clearPasscode(); Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error); }, 200); }; if (status === TYPE.CONFIRM) { return ( ); } return ( ); }; export default gestureHandlerRootHOC(PasscodeChoose);