import Button from "@/components/ui/Button"; import TextInput from "@/components/TextInput"; import CenteredForm from "@/layouts/CenteredForm"; import Link from "next/link"; import { FormEvent, useState } from "react"; import { toast } from "react-hot-toast"; import getServerSideProps from "@/lib/client/getServerSideProps"; import { useTranslation } from "next-i18next"; interface FormData { email: string; } export default function Forgot() { const { t } = useTranslation(); const [submitLoader, setSubmitLoader] = useState(false); const [form, setForm] = useState({ email: "", }); const [isEmailSent, setIsEmailSent] = useState(false); async function submitRequest() { const response = await fetch("/api/v1/auth/forgot-password", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(form), }); const data = await response.json(); if (response.ok) { toast.success(data.response); setIsEmailSent(true); } else { toast.error(data.response); } } async function sendConfirmation(event: FormEvent) { event.preventDefault(); if (form.email !== "") { setSubmitLoader(true); const load = toast.loading(t("sending_password_link")); await submitRequest(); toast.dismiss(load); setSubmitLoader(false); } else { toast.error(t("fill_all_fields")); } } return (

{isEmailSent ? t("email_sent") : t("forgot_password")}

{!isEmailSent ? ( <>

{t("password_email_prompt")}

{t("email")}

setForm({ ...form, email: e.target.value })} />
) : (

{t("reset_email_sent_desc")}

)}
{t("back_to_login")}
); } export { getServerSideProps };