import { UserServiceRef } from "@/api/service/service.ref"; import { useSession } from "@/ctx"; import { router } from "expo-router"; import React from "react"; import { View, ViewProps } from "react-native"; import { isEmail } from "validator"; import { EMPTY_FIELD, INVALID_EMAIL } from "../Errors"; import Button from "../ui/Button"; import FormError from "./FormError"; import TextInput from "./FormInput"; import PasswordTextInput from "./SecretTextInput"; export default React.forwardRef( ({ ...props }, ref): React.ReactElement => { const [email, setEmail] = React.useState(""); const [password, setPassword] = React.useState(""); const [error, setError] = React.useState(""); const [isFormValid, setIsFormValid] = React.useState(true); const { signIn } = useSession(); const userService = UserServiceRef; const validateForm = () => { setError(""); setIsFormValid(true); }; const invalidateForm = (error: string) => { setError(error); setIsFormValid(false); }; const onSubmit = () => { if (email != "") { if (isEmail(email)) { if (password != "") { validateForm(); const user = userService.login(email, password).catch((e) => { invalidateForm("Email ou mot de passe incorrect"); }); user.then((u) => { if (u) { signIn(u); router.replace("/HomeScreen"); } }); } else { invalidateForm(EMPTY_FIELD); } } else { invalidateForm(INVALID_EMAIL); } } else { invalidateForm(EMPTY_FIELD); } }; return ( {error} ); } );