{{#if framework == "nextjs"}} "use client"; {{/if}} import InputField from "@/components/global/form-field/input-field"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { useResendOTPMutation, useVerifyEmailMutation, } from "@/features/auth/queries/auth.mutations"; import { verifyZodSchema } from "@/features/auth/validators/verify.validator"; import { zodResolver } from "@hookform/resolvers/zod"; {{#if framework == "nextjs"}} import { useSearchParams } from "next/navigation"; {{else}} import { useSearchParams } from "react-router"; {{/if}} import { FormProvider, useForm } from "react-hook-form"; import { toast } from "sonner"; type VerifyValues = { email: string; otp: string; }; export default function VerifyEmailForm() { const mutation = useVerifyEmailMutation(); const resendMutation = useResendOTPMutation(); {{#if framework == "nextjs"}} const params = useSearchParams(); const prefillEmail = params?.get("email") || ""; {{else}} const [searchParams] = useSearchParams(); const prefillEmail = searchParams.get("email") || ""; {{/if}} const form = useForm({ mode: "onTouched", resolver: zodResolver(verifyZodSchema), defaultValues: { email: prefillEmail, otp: "" }, }); async function onSubmit(values: VerifyValues) { try { await mutation.mutateAsync(values); } catch {} } const resend = async () => { const email = form.getValues("email") || prefillEmail; if (!email) { toast.error("Email not available to resend OTP"); return; } try { await resendMutation.mutateAsync({ email }); } catch {} }; return ( Verify your email Enter the OTP sent to your email to verify your account
{!prefillEmail ? ( ) : null}
); }