enteghad + edit phone + edit email

This commit is contained in:
hamid zarghami
2025-02-24 12:06:22 +03:30
parent 158da6ce8a
commit e5d321e041
11 changed files with 413 additions and 31 deletions
+63 -1
View File
@@ -1,14 +1,68 @@
import { FC } from 'react'
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 { 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'
const AddCriticisms: FC = () => {
const { t } = useTranslation('global')
const [files, setFiles] = useState<File[]>([])
const multiUpload = useMultiUpload()
const createCriticisms = useCreateCriticisms()
const formik = useFormik<CreateCriticismsTypes>({
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 (
<div className='mt-4 text-sm'>
@@ -30,6 +84,8 @@ const AddCriticisms: FC = () => {
<Input
label={t('criticisms.subject')}
placeholder={t('criticisms.enter_your_subject')}
{...formik.getFieldProps('title')}
error_text={formik.touched.title && formik.errors.title ? formik.errors.title : ''}
/>
</div>
@@ -37,12 +93,16 @@ const AddCriticisms: FC = () => {
<Textarea
label={t('criticisms.description')}
placeholder={t('criticisms.enter_description')}
{...formik.getFieldProps('content')}
error_text={formik.touched.content && formik.errors.content ? formik.errors.content : ''}
/>
</div>
<div className='mt-7'>
<UploadBox
label={t('attachment')}
isMultiple
onChange={setFiles}
/>
</div>
@@ -51,6 +111,8 @@ const AddCriticisms: FC = () => {
<Button
label={t('ticket.send')}
className='max-w-[100px]'
onClick={() => formik.handleSubmit()}
isLoading={createCriticisms.isPending || multiUpload.isPending}
/>
</div>
</div>