import { type FC, useEffect, useState } from 'react' import DefaulModal from '@/components/DefaulModal' import DatePicker from '@/components/DatePicker' import Textarea from '@/components/Textarea' import UploadBox from '@/components/UploadBox' import Button from '@/components/Button' import { useCompleteCancel } from '@/pages/orders/hooks/useOrderData' import { useUploadSingle } from '@/pages/uploader/hooks/useUploaderData' import { useQueryClient } from '@tanstack/react-query' import { toast } from 'react-toastify' import { extractErrorMessage } from '@/helpers/utils' type Props = { open: boolean onClose: () => void cancelId: string onSuccess?: () => void } const CompleteCancelModal: FC = ({ open, onClose, cancelId, onSuccess }) => { const [refundDate, setRefundDate] = useState('') const [refundComment, setRefundComment] = useState('') const [refundReceiptFile, setRefundReceiptFile] = useState([]) const [isUploading, setIsUploading] = useState(false) const completeCancel = useCompleteCancel() const uploadSingle = useUploadSingle() const queryClient = useQueryClient() const resetForm = () => { setRefundDate('') setRefundComment('') setRefundReceiptFile([]) setIsUploading(false) } useEffect(() => { if (!open) { resetForm() } }, [open]) const handleClose = () => { resetForm() onClose() } const handleSubmit = async () => { if (!cancelId) { toast.error('شناسه کنسلی نامعتبر است') return } try { setIsUploading(true) let receiptUrl = '' if (refundReceiptFile.length > 0) { const uploadResponse = await uploadSingle.mutateAsync(refundReceiptFile[0]) receiptUrl = uploadResponse?.results?.url?.url || '' } await completeCancel.mutateAsync({ id: cancelId, params: { refundDate, refundComment, refundReceipt: receiptUrl, }, }) await queryClient.invalidateQueries({ queryKey: ['cancels'] }) toast.success('کنسلی با موفقیت تکمیل شد') handleClose() onSuccess?.() } catch (error) { toast.error(extractErrorMessage(error)) } finally { setIsUploading(false) } } return (
setRefundDate(date)} defaulValue={refundDate} />