import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { t } from "@/utils"; import { updateBankTransferApi } from "@/utils/api"; import { useState, useCallback } from "react"; import { useDropzone } from "react-dropzone"; import { MdClose } from "react-icons/md"; import { toast } from "sonner"; const UploadReceiptModal = ({ IsUploadRecipt, setIsUploadRecipt, transactionId, setData, }) => { const [selectedFile, setSelectedFile] = useState(null); const [isUploading, setIsUploading] = useState(false); const [preview, setPreview] = useState(null); const onDrop = useCallback((acceptedFiles) => { const file = acceptedFiles[0]; setSelectedFile(file); // Create preview URL const previewUrl = URL.createObjectURL(file); setPreview(previewUrl); }, []); const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop, accept: { "image/*": [".png", ".jpg", ".jpeg"], }, maxFiles: 1, multiple: false, }); const clearSelection = () => { if (preview) { URL.revokeObjectURL(preview); } setSelectedFile(null); setPreview(null); }; const handleReceiptSubmit = async () => { try { setIsUploading(true); const res = await updateBankTransferApi.updateBankTransfer({ payment_transection_id: transactionId, payment_receipt: selectedFile, }); if (res?.data?.error === false) { setData((prevData) => prevData.map((item) => item.id === transactionId ? res?.data?.data : item ) ); toast.success(t("receiptUploaded")); setIsUploadRecipt(false); } else { toast.error(res?.data?.message); } } catch (error) { console.log("Failed To Upload Receipt", error); } finally { setIsUploading(false); } }; return ( e.preventDefault()}> {t("uploadPaymentReceipt")} {t("uploadReceiptDescription")}
{!selectedFile ? (
{/* */}

{isDragActive ? t("dropYourReceiptHere") : t("dragAndDropReceipt")}

{t("clickToSelect")}

) : (
Receipt preview
)}
); }; export default UploadReceiptModal;