import { useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { useParams, useLocation } from "wouter"; import { useLanguage } from "../contexts/LanguageContext"; import { useGetRequest, useSubmitThankYou, getListRequestsQueryKey, getGetRequestQueryKey, } from "@workspace/api-client-react"; import { useQueryClient } from "@tanstack/react-query"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { CheckCircle, Heart } from "lucide-react"; import { Skeleton } from "@/components/ui/skeleton"; import { Link } from "wouter"; const schema = z.object({ beneficiaryName: z.string().min(2), message: z.string().min(10), }); type FormData = z.infer; export default function ThankYou() { const { t } = useLanguage(); const params = useParams<{ id: string }>(); const [, setLocation] = useLocation(); const queryClient = useQueryClient(); const [submitted, setSubmitted] = useState(false); const { data: request, isLoading } = useGetRequest(params.id || "", { query: { enabled: !!params.id, queryKey: getGetRequestQueryKey(params.id || "") }, }); const submitThankYou = useSubmitThankYou(); const form = useForm({ resolver: zodResolver(schema), defaultValues: { beneficiaryName: "", message: "", }, }); // Pre-fill name once loaded const beneficiaryName = request?.beneficiaryName || ""; const onSubmit = (data: FormData) => { submitThankYou.mutate( { id: params.id || "", data: { beneficiaryName: data.beneficiaryName, message: data.message }, }, { onSuccess: () => { queryClient.invalidateQueries({ queryKey: getListRequestsQueryKey() }); queryClient.invalidateQueries({ queryKey: getGetRequestQueryKey(params.id || "") }); setSubmitted(true); }, } ); }; if (isLoading) { return (
); } if (!request) { return (
{t.common.notFound}
); } if (submitted) { return (

{t.common.success}

{t.thankYou.title}

{t.thankYou.successNote}

); } return (

{t.thankYou.title}

{request.caseId} — {request.beneficiaryName}

{t.thankYou.title}
( {t.request.beneficiaryName} )} /> ( {t.thankYou.message}