From 2395890e6ca2579f49a1eacf69e3e5180b122585 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Tue, 30 Sep 2025 10:06:41 +0330 Subject: [PATCH] about us --- src/components/ModalConfrim.tsx | 2 +- src/config/Pages.ts | 5 +- src/pages/setting/AboutUsCreate.tsx | 123 ++++++++++++++++++ src/pages/setting/AboutUsList.tsx | 134 ++++++++++++++++++++ src/pages/setting/hooks/useSettingData.ts | 21 +++ src/pages/setting/service/SettingService.ts | 17 +++ src/pages/setting/types/Types.ts | 24 ++++ src/router/Main.tsx | 5 + src/shared/SideBar.tsx | 4 +- 9 files changed, 331 insertions(+), 4 deletions(-) create mode 100644 src/pages/setting/AboutUsCreate.tsx create mode 100644 src/pages/setting/AboutUsList.tsx create mode 100644 src/pages/setting/hooks/useSettingData.ts create mode 100644 src/pages/setting/service/SettingService.ts create mode 100644 src/pages/setting/types/Types.ts diff --git a/src/components/ModalConfrim.tsx b/src/components/ModalConfrim.tsx index 08a5d34..7246f16 100644 --- a/src/components/ModalConfrim.tsx +++ b/src/components/ModalConfrim.tsx @@ -25,7 +25,7 @@ const ModalConfrim: FC = (props: Props) => { title_header={t('confrim.subject')} isHeader > -
+
{ props.label ? diff --git a/src/config/Pages.ts b/src/config/Pages.ts index b1cdf4b..f436e7f 100644 --- a/src/config/Pages.ts +++ b/src/config/Pages.ts @@ -52,7 +52,10 @@ export const Pages = { create: "/learning/create", category: "/learning/category", }, - setting: "/setting", + pages: { + aboutUs: "/pages/about-us", + aboutUsCreate: "/pages/about-us/create", + }, wallet: "/wallet", profile: "/profile", customers: { diff --git a/src/pages/setting/AboutUsCreate.tsx b/src/pages/setting/AboutUsCreate.tsx new file mode 100644 index 0000000..0c09dd7 --- /dev/null +++ b/src/pages/setting/AboutUsCreate.tsx @@ -0,0 +1,123 @@ +import { type FC, useState } from 'react' +import { useCreateAboutUs } from './hooks/useSettingData' +import { useFormik } from 'formik'; +import type { CreateAboutUs } from './types/Types'; +import * as Yup from 'yup' +import { useNavigate } from 'react-router-dom' +import Input from '../../components/Input' +import Textarea from '../../components/Textarea' +import Button from '../../components/Button' +import { TickCircle } from 'iconsax-react' +import { useUploadSingle } from '../uploader/hooks/useUploaderData' +import UploadBoxDraggble from '@/components/UploadBoxDraggble' +import { toast } from 'react-toastify' +import { extractErrorMessage } from '@/helpers/utils' +import { Pages } from '@/config/Pages' + +const AboutUsCreate: FC = () => { + const navigate = useNavigate() + const uploadSingle = useUploadSingle() + const createAboutUs = useCreateAboutUs(); + + const [imageFile, setImageFile] = useState([]) + + const formik = useFormik({ + initialValues: { + title: '', + description: '', + imageUrl: '', + }, + validationSchema: Yup.object({ + title: Yup.string().required('عنوان درباره ما الزامی است'), + description: Yup.string().required('توضیحات درباره ما الزامی است'), + }), + onSubmit: async (values) => { + let imageUrl = values.imageUrl + + if (imageFile.length > 0) { + const imageResponse = await uploadSingle.mutateAsync(imageFile[0]) + imageUrl = imageResponse.results?.url?.url || '' + } + + const submitData = { + ...values, + imageUrl + } + + createAboutUs.mutate(submitData, { + onSuccess: () => { + toast.success('اطلاعات درباره ما با موفقیت ایجاد شد') + navigate(Pages.pages.aboutUs) + }, + onError: (error) => { + toast.error(extractErrorMessage(error)) + } + }) + } + }) + + return ( +
+
+
+

ساخت درباره ما جدید

+
+
+ +
+
+ +
+ {/* اطلاعات اصلی */} +
+

اطلاعات اصلی

+ +
+ + +