"use client"; import React, { useState, forwardRef, useImperativeHandle } from "react"; import { useForm } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import { signInValidationSchema } from "@/utils/form"; import { login } from "@/app/(auth)/actions"; import { ModalStatus, SignInForm, TextOnUse } from "@/types"; import { useRouter } from "next/navigation"; export interface FormRefMethods { resetForm: () => void; } interface ModalSignInFormProps { textOnUse: TextOnUse; setStatus: React.Dispatch>; } const ModalSignInForm = forwardRef( ({ textOnUse, setStatus }: ModalSignInFormProps, ref) => { // const context = useContext(Context); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [organisation, setOrganisation] = useState(""); const router = useRouter(); const { register, handleSubmit, reset, setError, clearErrors, formState: { errors }, } = useForm({ resolver: yupResolver(signInValidationSchema), }); const submitForm = async (data: SignInForm) => { console.log("data", data); clearErrors(); setEmail(data.email); setPassword(!data.password ? "" : data.password); setStatus(ModalStatus.Loading); if (!data.password) return; let response = undefined; try { console.log("before login"); response = await login({ email: data.email, password: data.password }); if (!response.success) { throw new Error(response.error); } const signInModal = document.getElementById("sign-in-modal"); if (!!signInModal) signInModal.click(); router.push("/account"); } catch (error) { setStatus(ModalStatus.Default); console.log(error); setError("email", { type: "custom", message: "Invalid Credentials" }); } }; useImperativeHandle(ref, () => ({ resetForm: () => { reset(); setEmail(""); setPassword(""); setOrganisation(""); }, })); return (
); } ); ModalSignInForm.displayName = "ModalSignInForm"; export default ModalSignInForm;