import { addReportReasonApi, getReportReasonsApi } from "@/utils/api"; import { useEffect, useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { toast } from "sonner"; import { t } from "@/utils"; const ReportModal = ({ productDetails, setProductDetails, isReportModalOpen, setIsReportModalOpen, }) => { const [reasons, setReasons] = useState([]); const [selectedReason, setSelectedReason] = useState(null); const [customReason, setCustomReason] = useState(""); const [IsSubmitting, setIsSubmitting] = useState(false); useEffect(() => { fetchReportData(); }, []); const fetchReportData = async () => { try { const response = await getReportReasonsApi.reportReasons(); const { data } = response?.data; setReasons(data?.data); } catch (error) { console.log(error); } }; const handleReport = async (e) => { e.preventDefault(); if (!selectedReason) { toast.error(t("pleaseSelectReason")); return; } // Validation: Ensure custom reason is provided if "Other" is selected if (selectedReason === "other" && !customReason.trim()) { toast.error(t("pleaseProvideReason")); return; } try { setIsSubmitting(true); const response = await addReportReasonApi.addReport({ item_id: productDetails?.id, report_reason_id: selectedReason === "other" ? "" : selectedReason, other_message: customReason, }); if (response.data?.error === true) { toast.error(response?.data?.message); } else { setProductDetails((prev) => ({ ...prev, is_already_reported: true })); toast.success(response?.data?.message); handleClose(); } } catch (error) { console.log(error); } finally { setIsSubmitting(false); } }; const handleClose = () => { setIsReportModalOpen(false); setSelectedReason(null); setCustomReason(""); }; return ( e.preventDefault()}> {t("report")}
{/* Pre-defined reasons */} {reasons.map((reason) => ( ))} {/* Other reason option */}
{selectedReason === "other" && (