import Button from "@/components/ui/Button"; import TextInput from "@/components/TextInput"; import CenteredForm from "@/layouts/CenteredForm"; import Link from "next/link"; import { useRouter } from "next/router"; import { FormEvent, useState } from "react"; import { toast } from "react-hot-toast"; import getServerSideProps from "@/lib/client/getServerSideProps"; import { useTranslation } from "next-i18next"; interface FormData { password: string; token: string; } export default function ResetPassword() { const { t } = useTranslation(); const [submitLoader, setSubmitLoader] = useState(false); const router = useRouter(); const [form, setForm] = useState({ password: "", token: router.query.token as string, }); const [requestSent, setRequestSent] = useState(false); async function submit(event: FormEvent) { event.preventDefault(); if ( form.password !== "" && form.token !== "" && !requestSent && !submitLoader ) { setSubmitLoader(true); const load = toast.loading(t("sending_password_recovery_link")); const response = await fetch("/api/v1/auth/reset-password", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(form), }); const data = await response.json(); toast.dismiss(load); if (response.ok) { toast.success(data.response); setRequestSent(true); } else { toast.error(data.response); } setSubmitLoader(false); } else { toast.error(t("please_fill_all_fields")); } } return (

{requestSent ? t("password_updated") : t("reset_password")}

{!requestSent ? ( <>

{t("enter_email_for_new_password")}

{t("new_password")}

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

{t("password_successfully_updated")}

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