import { Container, Heading, Input, Text } from "@chakra-ui/react" import { useMutation } from "@tanstack/react-query" import { createFileRoute, redirect } from "@tanstack/react-router" import { type SubmitHandler, useForm } from "react-hook-form" import { FiMail } from "react-icons/fi" import { type ApiError, LoginService } from "@/client" import { Button } from "@/components/ui/button" import { Field } from "@/components/ui/field" import { InputGroup } from "@/components/ui/input-group" import { isLoggedIn } from "@/hooks/useAuth" import useCustomToast from "@/hooks/useCustomToast" import { emailPattern, handleError } from "@/utils" interface FormData { email: string } export const Route = createFileRoute("/recover-password")({ component: RecoverPassword, beforeLoad: async () => { if (isLoggedIn()) { throw redirect({ to: "/", }) } }, }) function RecoverPassword() { const { register, handleSubmit, reset, formState: { errors, isSubmitting }, } = useForm() const { showSuccessToast } = useCustomToast() const recoverPassword = async (data: FormData) => { await LoginService.recoverPassword({ email: data.email, }) } const mutation = useMutation({ mutationFn: recoverPassword, onSuccess: () => { showSuccessToast("Password recovery email sent successfully.") reset() }, onError: (err: ApiError) => { handleError(err) }, }) const onSubmit: SubmitHandler = async (data) => { mutation.mutate(data) } return ( Password Recovery A password recovery email will be sent to the registered account. }> ) }