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 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 type { CreateCriticismsTypes } from './types/CriticismsTypes'
import * as Yup from 'yup'
import { toast } from '../../shared/toast'
// import type { ErrorType } from '../../helpers/types'
// import { useCreateCriticisms } from './hooks/useCriticismsData'
import type { ErrorType } from '../../helpers/types'
import { useCreateCriticisms } from './hooks/useCriticismsData'
import { t } from '../../locale'
import { useMultiUpload } from '../uploader/hooks/useUploader'
const AddCriticisms: FC = () => {
// const [files, setFiles] = useState<File[]>([])
// const [percent, setPercent] = useState<number>(0)
// const multiUpload = useMultiUpload(setPercent)
// const createCriticisms = useCreateCriticisms()
const [files, setFiles] = useState<File[]>([])
const multiUpload = useMultiUpload()
const createCriticisms = useCreateCriticisms()
const formik = useFormik<CreateCriticismsTypes>({
initialValues: {
@@ -31,41 +30,33 @@ const AddCriticisms: FC = () => {
content: Yup.string().required(t('errors.required')),
}),
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')
formik.resetForm()
// 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.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')
// }
// })
setTimeout(() => {
window.location.reload()
}, 1000);
},
onError: (error: ErrorType) => {
toast(error.response?.data?.error?.message[0], 'error')
}
})
}
})
@@ -107,7 +98,7 @@ const AddCriticisms: FC = () => {
<UploadBox
label={t('attach')}
isMultiple
onChange={() => { }}
onChange={setFiles}
/>
</div>
@@ -116,8 +107,7 @@ const AddCriticisms: FC = () => {
<Button
className='xl:max-w-[100px]'
onClick={() => formik.handleSubmit()}
isLoading={false}
percentage={0}
isLoading={createCriticisms.isPending}
>
<div className='flex gap-2 items-center'>
<TickCircle size={20} color='black' />
@@ -2,6 +2,6 @@ import axios from "../../../config/axios";
import { type CreateCriticismsTypes } from "../types/CriticismsTypes";
export const createCriticisms = async (params: CreateCriticismsTypes) => {
const { data } = await axios.post(`/criticisms`, params);
const { data } = await axios.post(`/public/criticisms`, params);
return data;
};