import { type FC, useState, useEffect } from 'react' import { useParams, useNavigate } from 'react-router-dom' import { useFormik } from 'formik' import { type CreateWarrantyType } from './types/Types' import * as Yup from 'yup' import { useGetWarrantyById, useUpdateWarranty } from './hooks/useWarrantyData' import Input from '../../components/Input' import Button from '../../components/Button' import { TickCircle } from 'iconsax-react' import { useUploadSingle } from '../uploader/hooks/useUploaderData' import UploadBoxDraggble from '@/components/UploadBoxDraggble' import { toast } from 'react-toastify' import { extractErrorMessage } from '@/helpers/utils' import { Pages } from '@/config/Pages' const UpdateWarranty: FC = () => { const navigate = useNavigate() const { id } = useParams<{ id: string }>() const uploadSingle = useUploadSingle() const { data: warrantyDetail, isLoading: warrantyDetailLoading, error: warrantyDetailError } = useGetWarrantyById(id!) const warranty = warrantyDetail?.results.warranty const updateWarrantyMutation = useUpdateWarranty() const [logoFile, setLogoFile] = useState([]) const formik = useFormik({ initialValues: { name: '', duration: '', logoUrl: '', }, validationSchema: Yup.object({ name: Yup.string().required('عنوان گارانتی الزامی است'), duration: Yup.string().required('مدت زمان گارانتی الزامی است'), }), onSubmit: async (values) => { let logoUrl = values.logoUrl if (logoFile.length > 0) { const logoResponse = await uploadSingle.mutateAsync(logoFile[0]) logoUrl = logoResponse.results?.url?.url || '' } const submitData = { ...values, logoUrl } updateWarrantyMutation.mutate({ id: id!, params: submitData }, { onSuccess: () => { toast.success('گارانتی با موفقیت بروزرسانی شد') navigate(Pages.products.warranty.list) }, onError: (error) => { toast.error(extractErrorMessage(error)) } }) }, }) useEffect(() => { if (warranty) { formik.setValues({ name: warranty.name, duration: warranty.duration, logoUrl: warranty.logoUrl, }) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [warranty]) if (warrantyDetailLoading) { return
در حال بارگذاری...
} if (warrantyDetailError) { return
خطا در بارگذاری داده‌ها
} return (

ویرایش گارانتی

{/* اطلاعات اصلی */}

اطلاعات اصلی

{/* فایل‌ها */}

فایل‌ها

setLogoFile(files)} preview={warranty?.logoUrl ? [warranty.logoUrl] : []} />
) } export default UpdateWarranty