import React, { useState, useEffect } from 'react'; import { router } from 'expo-router'; import { createUserWithEmailAndPassword, updateProfile } from 'firebase/auth'; import { auth } from '@/contexts/firebase'; import { useAuth } from '@/contexts/AuthContext'; import { View, ScrollView, Text, TouchableOpacity } from 'react-native'; import { StatusBar } from 'expo-status-bar'; import { useFormik } from 'formik'; import { SafeAreaView } from 'react-native-safe-area-context'; import { Ionicons } from '@expo/vector-icons'; import { providerMenu, PageHeader, StyledContainer, InnerContainer, StyledFormArea, Title, SubTitle, PageImage, StyledButton, ButtonText, MessageBox, LoginTextInput, RegisterDropdownInput, } from '../components/generalHelpers.jsx'; export default function Register() { const [providerDropdownOpen, setProviderDropdownOpen] = useState(false); const [hidePassword, setHidePassword] = useState(true); const [registerButtonDisabled, setRegisterButtonDisabled] = useState(true); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const { user } = useAuth(); const formik = useFormik({ initialValues: { firstName: '', lastName: '', number: '', provider: '', email: '', password: '', passwordConfirmation: '' }, onSubmit: async (values) => { setError(''); setLoading(true); try { const userCredential = await createUserWithEmailAndPassword(auth, values.email, values.password); await updateProfile(userCredential.user, { displayName: `${values.firstName} ${values.lastName}` }); router.replace('./incidents'); } catch (err) { setError(err.message); } finally { setLoading(false); } } }); const formValues = formik.values; useEffect(() => { if (formValues) { if ( formValues.email && formValues.firstName && formValues.lastName && formValues.password.length !== 0 && formValues.password === formValues.passwordConfirmation ) { setRegisterButtonDisabled(false); } else { setRegisterButtonDisabled(true); } } else { setRegisterButtonDisabled(true); } }, [formValues]); useEffect(() => { if (user) { router.replace('./incidents'); } }, [user]); return ( Back to Login {error ? {error} : null} Tones Account Register ... Register ) }