From 6bdfd8129d81ffd565250e29d1275c512e1d655b Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sun, 22 Feb 2026 15:17:56 +0330 Subject: [PATCH] announcement --- src/locale/fa.ts | 3 + src/pages/annoncement/Create.tsx | 127 +++++-------- src/pages/annoncement/List.tsx | 174 +++++------------- src/pages/annoncement/Update.tsx | 122 ++++-------- .../annoncement/service/AnnoncementService.ts | 10 +- .../annoncement/types/AnnoncementTypes.ts | 4 +- 6 files changed, 146 insertions(+), 294 deletions(-) diff --git a/src/locale/fa.ts b/src/locale/fa.ts index b81218f..b798cf7 100644 --- a/src/locale/fa.ts +++ b/src/locale/fa.ts @@ -66,4 +66,7 @@ export const fa = { }, }, select: "انتخاب", + errors: { + required: "این فیلد الزامی است", + }, }; diff --git a/src/pages/annoncement/Create.tsx b/src/pages/annoncement/Create.tsx index 1881bfa..00129dd 100644 --- a/src/pages/annoncement/Create.tsx +++ b/src/pages/annoncement/Create.tsx @@ -1,36 +1,24 @@ import { type FC } from 'react' -// import { useTranslation } from 'react-i18next' // Commented out - missing dependency import Button from '../../components/Button' import { InfoCircle, TickCircle } from 'iconsax-react' import Input from '../../components/Input' -// import Quill from 'quill' // Commented out - missing dependency import DatePickerComponent from '../../components/DatePicker' -// import CheckBoxComponent from '../../components/CheckBoxComponent' // Commented out - component doesn't exist import Select from '../../components/Select' -// import { useGetAllServices } from '../service/hooks/useServiceData' // Commented out - service doesn't exist import { useFormik } from 'formik' import { type AnnoncementCreateType } from './types/AnnoncementTypes' import * as Yup from 'yup' -// import { ServiceItemType } from '../service/types/ServiceTypes' // Commented out - service doesn't exist -// import { useCreateAnnoncement, useGetCustomersService } from './hooks/useAnnoncementData' // Commented out - API calls -// import { ErrorType } from '../../helpers/types' // Commented out - API calls -// import { toast } from 'react-toastify' // Commented out - API calls import moment from 'moment-jalaali' import { t } from '@/locale' import Textarea from '@/components/Textarea' -// import { useNavigate } from 'react-router-dom' // Commented out - unused -// import { Pages } from '../../config/Pages' // Commented out - unused +import { useNavigate } from 'react-router-dom' +import { Paths } from '@/config/Paths' +import { useCreateAnnoncement } from './hooks/useAnnoncementData' +import { toast } from '@/shared/toast' +import { extractErrorMessage } from '@/config/func' const Create: FC = () => { - - // const { t } = useTranslation('global') // Commented out - missing dependency - // const navigate = useNavigate() // Commented out - unused - // const editorRef = useRef(null); // Commented out - unused - // const [serviceId, setServiceId] = useState('') // Commented out - unused - // const [customerId, setCustomerId] = useState('') // Commented out - unused - // const getServices = useGetAllServices('', 1, '', '', false) // Commented out - API call - // const createAnnoncement = useCreateAnnoncement() // Commented out - API call - // const getCustomer = useGetCustomersService(serviceId) // Commented out - API call + const navigate = useNavigate() + const createAnnoncement = useCreateAnnoncement() const formik = useFormik({ initialValues: { @@ -49,51 +37,22 @@ const Create: FC = () => { publishAt: Yup.string().required(t('errors.required')), }), onSubmit: (values) => { - // API submission commented out - console.log('Form values:', values) - // if (!values.serviceId) { - // values.serviceId = undefined - // } - // if (customerId) { - // values.serviceId = undefined - // values.userIds = [customerId] - // } - // createAnnoncement.mutate(values, { - // onSuccess: () => { - // formik.resetForm() - // toast.success(t('success')) - // navigate(Pages.announcement.list) - // }, - // onError: (error: ErrorType) => { - // toast.error(error.response?.data?.error?.message[0]) - // } - // }) + const payload = { ...values } + if (!payload.serviceId) payload.serviceId = undefined + createAnnoncement.mutate(payload, { + onSuccess: () => { + formik.resetForm() + toast(t('success'), 'success') + navigate(Paths.announcement.list) + }, + onError: (error) => { + toast(extractErrorMessage(error), 'error') + } + }) } }) - // useEffect(() => { - // // Quill editor commented out - missing dependency - // const quill = new Quill('#editor', { - // theme: 'snow', - // modules: { - // toolbar: [ - // [{ header: '1' }, { header: '2' }, { font: [] }], - // [{ list: 'ordered' }, { list: 'bullet' }], - // ['bold', 'italic', 'underline'], - // ['link', 'image'], - // [{ align: [] }], - // ['clean'] - // ] - // } - // }); - // quill.on('text-change', () => { - // const html = editorRef.current?.querySelector('.ql-editor')?.innerHTML || ''; - // formik.setFieldValue('content', html); - // }); - // // eslint-disable-next-line react-hooks/exhaustive-deps - // }, []); - return (
@@ -103,8 +62,11 @@ const Create: FC = () => {
- formik.setFieldValue('publishAt', moment(d, 'jYYYY-jMM-jDD').format('YYYY-MM-DD'))} - placeholder={t('select')} - /> -
{

-
- formik.setFieldValue('isImportant', e.target.checked)} - className="mr-2" - /> - -
{t('announcement.label_importance')}
- -
-