import React, { useEffect, useState } from "react"; import { Alert, Box, Button, Paper, TextField, Typography } from "@mui/material"; import { useNavigate } from "react-router-dom"; import { api, getApiErrorMessage } from "../api"; import { useToast } from "../toast"; import { useI18n } from "../i18n/I18nProvider"; export default function ForgotPasswordPage() { const { toast } = useToast(); const { t } = useI18n(); const navigate = useNavigate(); const [email, setEmail] = useState(""); const [loading, setLoading] = useState(false); const [submitted, setSubmitted] = useState(false); useEffect(() => { const params = new URLSearchParams(window.location.search); setEmail(params.get("email") || ""); }, []); return ( {t("forgotPasswordTitle")} {t("forgotPasswordBody")} { e.preventDefault(); if (!email.trim()) { toast(t("passwordResetEnterEmail"), "info"); return; } setLoading(true); api .post("/auth/request-password-reset", { email: email.trim() }) .then(() => { setSubmitted(true); toast(t("passwordResetRequestSent"), "success"); }) .catch((error: any) => { toast(getApiErrorMessage(error, t("passwordResetRequestFailed")), "error"); }) .finally(() => setLoading(false)); }} sx={{ display: "flex", flexDirection: "column", gap: 1.5 }} > {submitted ? {t("passwordResetRequestSent")} : null} setEmail(e.target.value)} autoComplete="email" fullWidth /> ); }