import { NavigationProp, useNavigation } from "@react-navigation/native"; import React, { FunctionComponent, useState } from "react"; import { View } from "react-native"; import { useSecureContext } from "../../../hooks/secure-http-context"; import { AuthRoutesStackParams } from "../../../routes/AuthRoutes"; import {TextInputComponent} from "../../shared/InputComponent"; import {NblocksButton} from "../../shared/NblocksButton"; import {SubTitleComponent} from "../../shared/SubTitleComponent"; import {TextComponent} from "../../shared/TextComponent"; import {TitleComponent} from "../../shared/TitleComponent"; import {BaseStyleComponent} from "../BaseStyleComponent"; const SetupMfaComponent:FunctionComponent = () => { const navigation = useNavigation>(); const {authService} = useSecureContext(); const [phoneNumber, setPhoneNumber] = useState(""); const [mfaCode, setMfaCode] = useState(""); const [backupCode, setBackupCode] = useState(""); const [step, setStep] = useState(0); const submitPhoneNumber = async(): Promise => { await authService.startMfaUserSetup(phoneNumber); setStep(1); } const submitMfaCode = async(): Promise => { const backupCode = await authService.finishMfaUserSetup(mfaCode); setBackupCode(backupCode); setStep(2); } switch (step) { case 0: return ( setPhoneNumber(val)} /> submitPhoneNumber()} disabled={!phoneNumber} /> ); case 1: return ( setMfaCode(val)} /> submitMfaCode()} disabled={!mfaCode} /> ); case 2: return ( {backupCode} navigation.navigate('ChooseUser')} /> ); default: return (null); } } export {SetupMfaComponent};