'use client'; import { useState, useEffect } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { addReportReviewApi } from "@/utils/api"; import { toast } from "sonner"; import { t } from "@/utils"; const ReportReviewModal = ({ isOpen, setIsOpen, reviewId, setMyReviews }) => { const [reason, setReason] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); const [validationError, setValidationError] = useState(""); // Clear reason and validation error when modal closes useEffect(() => { if (!isOpen) { setReason(""); setValidationError(""); } }, [isOpen]); const handleSubmit = async () => { if (!reason.trim()) { setValidationError("Please provide a reason for the report"); return; } setValidationError(""); setIsSubmitting(true); try { const res = await addReportReviewApi.addReportReview({ seller_review_id: reviewId, report_reason: reason, }); if (res?.data?.error === false) { toast.success(res?.data?.message) setMyReviews(prevReviews => prevReviews.map(review => review.id === reviewId ? { ...review, report_reason: res?.data?.data.report_reason, report_status: res?.data?.data.report_status } : review ) ); setReason(""); setIsOpen(false); } else { toast.error(res?.data?.message) } } catch (error) { console.error("Error reporting review:", error); toast.error(t("somethingWentWrong")) } finally { setIsSubmitting(false); } }; // Clear validation error when user types const handleReasonChange = (e) => { setReason(e.target.value); if (validationError) { setValidationError(""); } }; return ( e.preventDefault()} className="px-6 py-6 sm:max-w-[500px]"> {t('reportReview')} {t('reportReviewDescription')}