import React, { useState, useEffect } from 'react'; import { View, Text, ScrollView, KeyboardAvoidingView, Platform } from 'react-native'; import { StatusBar } from 'expo-status-bar'; import { useFormik } from 'formik'; import { SafeAreaView } from 'react-native-safe-area-context'; import { router, Link } from 'expo-router'; import { PageHeader, StyledContainer, InnerContainer, StyledFormArea, Title, SubTitle, PageImage, StyledButton, ButtonText, MessageBox, Line, ExtraView, ExtraText, TextLinkContent, LoginTextInput } from '@/components/generalHelpers.jsx'; import { signInWithEmailAndPassword } from 'firebase/auth'; import { auth } from '@/contexts/firebase'; import { useNotifications } from '@/hooks'; export default function Login() { const [hidePassword, setHidePassword] = useState(true); const [loginButtonDisabled, setLoginButtonDisabled] = useState(true); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const { expoPushToken } = useNotifications(); const formik = useFormik({ initialValues: { email: '', password: '' }, onSubmit: async (values) => { setError(''); setLoading(true); try { await signInWithEmailAndPassword(auth, values.email, values.password); router.replace('./incidents'); } catch (err) { setError(err.message); } finally { setLoading(false); } }, }); const formValues = formik.values; useEffect(() => { if (formValues) { if (formValues.email && formValues.password) { setLoginButtonDisabled(false); } else { setLoginButtonDisabled(true); } } }, [formValues]); return ( Tones Account Login {error ? {error} : null} ... Login Don't have an account already? Register Temporary Area: Incidents Landing View Token: {expoPushToken} ); }