import { FC, useState } from 'react' import { useTranslation } from 'react-i18next' import Input from '../../components/Input' import Textarea from '../../components/Textarea' import UploadBox from '../../components/UploadBox' import Button from '../../components/Button' import { TickCircle, TickSquare } from 'iconsax-react' import { useMultiUpload } from '../ticket/hooks/useTicketData' import { useFormik } from 'formik' import { CreateCriticismsTypes } from './types/CriticismsTypes' import * as Yup from 'yup' import { toast } from 'react-toastify' import { ErrorType } from '../../helpers/types' import { useCreateCriticisms } from './hooks/useCriticismsData' import { Helmet } from 'react-helmet-async' const AddCriticisms: FC = () => { const { t } = useTranslation('global') const [files, setFiles] = useState([]) const multiUpload = useMultiUpload() const createCriticisms = useCreateCriticisms() const formik = useFormik({ initialValues: { content: '', files: [], title: '', }, validationSchema: Yup.object({ title: Yup.string().required(t('errors.required')), content: Yup.string().required(t('errors.required')), }), onSubmit: async (values) => { if (files.length > 0) { const images = new FormData() files.forEach(file => { images.append('files', file) }) await multiUpload.mutateAsync(images, { onSuccess: async (data) => { values.files = await data.data.map((item: { url: string }) => item?.url) }, onError: (error: ErrorType) => { toast.error(error.response?.data?.error?.message[0]) } }) } else { delete values.files } createCriticisms.mutate(values, { onSuccess: () => { toast.success(t('success')) formik.resetForm() setTimeout(() => { window.location.reload() }, 1000); }, onError: (error: ErrorType) => { toast.error(error.response?.data?.error?.message[0]) } }) } }) return (
داناک | انتقادات
{t('criticisms.criticisms')}
{t('criticisms.submit_your_criticisms')}
{t('criticisms.description_criticisms')}