import Button from '@/components/Button' import Input from '@/components/Input'; import { clx } from '@/helpers/utils'; import { useFormik } from 'formik'; import { AddSquare } from 'iconsax-react' import { useState, type FC } from 'react' import type { CreateProductType } from './types/Types'; import * as Yup from 'yup' import Textarea from '@/components/Textarea'; import CategoriesSelect from './components/CategoriesSelect'; import SwitchComponent from '@/components/Switch'; import UploadBoxDraggble from '@/components/UploadBoxDraggble'; import { useMultiUpload } from '../uploader/hooks/useUploader'; import { useCreateProduct } from './hooks/useProductData'; import { toast } from 'react-toastify'; import type { ErrorType } from '@/helpers/types'; import { extractErrorMessage } from '@/config/func'; import { useNavigate } from 'react-router-dom'; const CreateProduct: FC = () => { const navigate = useNavigate() const [files, setFiles] = useState([]) const { mutate: upload, isPending: isUploading } = useMultiUpload() const { mutate: createProduct, isPending } = useCreateProduct() const handleSave = (values: CreateProductType) => { createProduct(values, { onSuccess: () => { toast.success('عملیات با موفقیت انجام شد') formik.resetForm() navigate(-1) }, onError: (error: ErrorType) => { toast.error(extractErrorMessage(error)) } }) } const formik = useFormik({ initialValues: { categoryId: '', desc: '', images: [], isActive: true, linkUrl: '', order: 1, quantities: [], title: '' }, validationSchema: Yup.object({ categoryId: Yup.string().required('این فیلد اجباری می باشد.'), title: Yup.string().required('این فیلد اجباری می باشد.'), }), onSubmit: (values) => { if (files.length > 0) { upload(files, { onSuccess: (data) => { const imagesUrl: string[] = [] data.data?.map((item) => { imagesUrl.push(item.url) }) values.images = imagesUrl handleSave(values) } }) } else { handleSave(values) } } }) const handleQuantities = (value: number) => { const array = [...formik.values.quantities] const index: number = array.findIndex(o => o === value) if (index > -1) { array.splice(index, 1) } else { array.push(value) } formik.setFieldValue('quantities', array) } return (

محصول جدید

اطلاعات محصول