From e5d321e041a9233bcfa07a455f76ea4af245730d Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 24 Feb 2025 12:06:22 +0330 Subject: [PATCH] enteghad + edit phone + edit email --- src/langs/fa.json | 3 +- src/pages/criticisms/Add.tsx | 64 +++++++- .../criticisms/hooks/useCriticismsData.ts | 10 ++ .../criticisms/service/CriticismsService.ts | 7 + src/pages/criticisms/types/CriticismsTypes.ts | 5 + src/pages/profile/Profile.tsx | 36 ++--- src/pages/profile/components/Email.tsx | 120 +++++++++++++++ src/pages/profile/components/Phone.tsx | 143 ++++++++++++++++++ src/pages/profile/hooks/useProfileData.tsx | 20 ++- src/pages/profile/service/ProfileService.ts | 23 ++- src/pages/profile/types/ProfileTypes.ts | 13 ++ 11 files changed, 413 insertions(+), 31 deletions(-) create mode 100644 src/pages/criticisms/hooks/useCriticismsData.ts create mode 100644 src/pages/criticisms/service/CriticismsService.ts create mode 100644 src/pages/criticisms/types/CriticismsTypes.ts create mode 100644 src/pages/profile/components/Email.tsx create mode 100644 src/pages/profile/components/Phone.tsx diff --git a/src/langs/fa.json b/src/langs/fa.json index a64d29d..940803b 100644 --- a/src/langs/fa.json +++ b/src/langs/fa.json @@ -371,7 +371,8 @@ "username_available": "نام کاربری موجود", "username_not_available": "نام کاربری موجود نیست", "username_save_success": "نام کاربری با موفقیت ذخیره شد", - "image_uploaded_successfully": "تصویر با موفقیت آپلود شد" + "image_uploaded_successfully": "تصویر با موفقیت آپلود شد", + "confrim_email": "تایید ایمیل" }, "email": "ایمیل", "save": "ذخیره", diff --git a/src/pages/criticisms/Add.tsx b/src/pages/criticisms/Add.tsx index e873ba3..267ca37 100644 --- a/src/pages/criticisms/Add.tsx +++ b/src/pages/criticisms/Add.tsx @@ -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([]) + 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 (
@@ -30,6 +84,8 @@ const AddCriticisms: FC = () => {
@@ -37,12 +93,16 @@ const AddCriticisms: FC = () => {