import React, { JSX, useEffect, useState } from 'react' import { View, Image, Text, StyleSheet, Dimensions } from 'react-native' import { useForm, Controller } from 'react-hook-form' import { useNavigate } from 'react-router-native' import { CustomInput, Button, TextHelper, ErrorMessage } from '../components/FormElements' import { useAppDispatch, useAppSelector } from '../redux/hooks' import { setRegistrationInformation, setToken, startAuthentication, completeAuthentication, setRecaptcha, MedTechApiState } from '../services/api' import { WebViewComponent } from '../components/WebViewComponent' import { createSelector } from '@reduxjs/toolkit' import { routes } from '../navigation/Routes' import { CustomActivityIndicator } from '../components/CustomActivityIndicator' const selectMedTechApiData = createSelector([(state: { medTechApi: MedTechApiState }) => state.medTechApi], (medTechApi: MedTechApiState) => ({ online: medTechApi.online, loginProcessStarted: medTechApi.loginProcessStarted, })) const WIDTH_MODAL = Dimensions.get('window').width const HEIGHT_MODAL = Dimensions.get('window').height export const Register = (): JSX.Element => { const { control, handleSubmit, formState: { errors }, } = useForm({ defaultValues: { userFirstName: '', userLastName: '', userEmail: '', userCode: '', }, }) const navigate = useNavigate() const dispatch = useAppDispatch() const [isWaitingForCode, setWaitingForCode] = useState(false) const { online, loginProcessStarted } = useAppSelector(selectMedTechApiData) useEffect(() => { if (online) { navigate(routes.home) } }, [online, navigate]) const onAskCode = (data: { userEmail: string; userFirstName: string; userLastName: string }) => { setWaitingForCode(true) dispatch(setRegistrationInformation({ email: data.userEmail, firstName: data.userFirstName, lastName: data.userLastName })) dispatch(startAuthentication()) } const onRegister = (data: { userCode: string }) => { setWaitingForCode(false) dispatch(setToken({ token: data.userCode })) dispatch(completeAuthentication()) } return ( <> {loginProcessStarted && } Registration ( )} name="userFirstName" /> {errors.userFirstName?.message && } ( )} name="userLastName" /> {errors.userLastName?.message && } ( )} name="userEmail" /> {errors.userEmail?.message && } {isWaitingForCode ? ( ( )} name="userCode" /> {errors.userCode?.message && } ) : null} dispatch(setRecaptcha({ recaptcha: value }))} /> {isWaitingForCode ? (