criticisms

This commit is contained in:
hamid zarghami
2026-02-23 09:46:01 +03:30
parent ef26521e6e
commit 86e9b5678b
2 changed files with 34 additions and 44 deletions
+34 -44
View File
@@ -1,24 +1,23 @@
import { type FC } from 'react' import { useState, type FC } from 'react'
import Input from '../../components/Input' import Input from '../../components/Input'
import Textarea from '../../components/Textarea' import Textarea from '../../components/Textarea'
import UploadBox from '../../components/UploadBox' import UploadBox from '../../components/UploadBox'
import Button from '../../components/Button' import Button from '../../components/Button'
import { TickCircle, TickSquare } from 'iconsax-react' import { TickCircle, TickSquare } from 'iconsax-react'
// import { useMultiUpload } from '../ticket/hooks/useTicketData'
import { useFormik } from 'formik' import { useFormik } from 'formik'
import type { CreateCriticismsTypes } from './types/CriticismsTypes' import type { CreateCriticismsTypes } from './types/CriticismsTypes'
import * as Yup from 'yup' import * as Yup from 'yup'
import { toast } from '../../shared/toast' import { toast } from '../../shared/toast'
// import type { ErrorType } from '../../helpers/types' import type { ErrorType } from '../../helpers/types'
// import { useCreateCriticisms } from './hooks/useCriticismsData' import { useCreateCriticisms } from './hooks/useCriticismsData'
import { t } from '../../locale' import { t } from '../../locale'
import { useMultiUpload } from '../uploader/hooks/useUploader'
const AddCriticisms: FC = () => { const AddCriticisms: FC = () => {
// const [files, setFiles] = useState<File[]>([]) const [files, setFiles] = useState<File[]>([])
// const [percent, setPercent] = useState<number>(0) const multiUpload = useMultiUpload()
// const multiUpload = useMultiUpload(setPercent) const createCriticisms = useCreateCriticisms()
// const createCriticisms = useCreateCriticisms()
const formik = useFormik<CreateCriticismsTypes>({ const formik = useFormik<CreateCriticismsTypes>({
initialValues: { initialValues: {
@@ -31,41 +30,33 @@ const AddCriticisms: FC = () => {
content: Yup.string().required(t('errors.required')), content: Yup.string().required(t('errors.required')),
}), }),
onSubmit: async (values: CreateCriticismsTypes) => { onSubmit: async (values: CreateCriticismsTypes) => {
// کامنت شده - بخش ارتباط با سرور
console.log('Form submitted:', values) if (files.length > 0) {
await multiUpload.mutateAsync(files, {
onSuccess: async (data) => {
values.files = await data.data.map((item: { url: string }) => item?.url)
},
onError: (error: ErrorType) => {
toast(error.response?.data?.error?.message[0], 'error')
}
})
} else {
delete values.files
}
createCriticisms.mutate(values, {
onSuccess: () => {
toast(t('success'), 'success') toast(t('success'), 'success')
formik.resetForm() formik.resetForm()
setTimeout(() => {
// if (files.length > 0) { window.location.reload()
// const images = new FormData() }, 1000);
// files.forEach(file => { },
// images.append('files', file) onError: (error: ErrorType) => {
// }) toast(error.response?.data?.error?.message[0], 'error')
// await multiUpload.mutateAsync(images, { }
// onSuccess: async (data) => { })
// values.files = await data.data.map((item: { url: string }) => item?.url)
// },
// onError: (error: ErrorType) => {
// toast(error.response?.data?.error?.message[0], 'error')
// }
// })
// } else {
// delete values.files
// }
// createCriticisms.mutate(values, {
// onSuccess: () => {
// toast(t('success'), 'success')
// formik.resetForm()
// setTimeout(() => {
// window.location.reload()
// }, 1000);
// },
// onError: (error: ErrorType) => {
// toast(error.response?.data?.error?.message[0], 'error')
// }
// })
} }
}) })
@@ -107,7 +98,7 @@ const AddCriticisms: FC = () => {
<UploadBox <UploadBox
label={t('attach')} label={t('attach')}
isMultiple isMultiple
onChange={() => { }} onChange={setFiles}
/> />
</div> </div>
@@ -116,8 +107,7 @@ const AddCriticisms: FC = () => {
<Button <Button
className='xl:max-w-[100px]' className='xl:max-w-[100px]'
onClick={() => formik.handleSubmit()} onClick={() => formik.handleSubmit()}
isLoading={false} isLoading={createCriticisms.isPending}
percentage={0}
> >
<div className='flex gap-2 items-center'> <div className='flex gap-2 items-center'>
<TickCircle size={20} color='black' /> <TickCircle size={20} color='black' />
@@ -2,6 +2,6 @@ import axios from "../../../config/axios";
import { type CreateCriticismsTypes } from "../types/CriticismsTypes"; import { type CreateCriticismsTypes } from "../types/CriticismsTypes";
export const createCriticisms = async (params: CreateCriticismsTypes) => { export const createCriticisms = async (params: CreateCriticismsTypes) => {
const { data } = await axios.post(`/criticisms`, params); const { data } = await axios.post(`/public/criticisms`, params);
return data; return data;
}; };