import { type FC, useState, useEffect } from 'react' import PageTitle from '../../components/PageTitle' import { useFormik } from 'formik' import * as Yup from 'yup' import { useGetShop, useUpdateShop } from './hooks/useSettingData' import { type UpdateShopType } from './types/Types' import Button from '../../components/Button' import Input from '../../components/Input' import Textarea from '../../components/Textarea' import UploadBox from '../../components/UploadBox' import { TickCircle } from 'iconsax-react' import { toast } from 'react-toastify' import { extractErrorMessage } from '@/helpers/utils' import { useSingleUpload } from '../category' // Validation schema برای UpdateShopType const validationSchema = Yup.object().shape({ shopName: Yup.string().required('نام شاپ الزامی است'), shopDescription: Yup.string().required('توضیحات شاپ الزامی است'), telephoneNumber: Yup.string().required('شماره تلفن الزامی است'), shopPostalCode: Yup.string().required('کد پستی الزامی است'), }) const Shop: FC = () => { const { data: shopDetail, isLoading: shopDetailLoading, error: shopDetailError } = useGetShop() const updateShopMutation = useUpdateShop() const uploadSingle = useSingleUpload() const [logoFile, setLogoFile] = useState([]) const formik = useFormik({ initialValues: { shopName: '', shopDescription: '', telephoneNumber: '', shopPostalCode: '', logo: undefined }, validationSchema, onSubmit: async (values) => { if (logoFile.length > 0) { const logoResponse = await uploadSingle.mutateAsync(logoFile[0]) values.logo = logoResponse.results?.url?.url || undefined } else { values.logo = undefined } const submitData = { ...values, } updateShopMutation.mutate(submitData, { onSuccess: () => { toast.success('اطلاعات شاپ با موفقیت بروزرسانی شد') }, onError: (error) => { toast.error(extractErrorMessage(error)) } }) } }) useEffect(() => { if (shopDetail?.results?.shop) { const shop = shopDetail.results.shop formik.setValues({ shopName: shop.shopName || '', shopDescription: shop.shopDescription || '', telephoneNumber: shop.telephoneNumber || '', shopPostalCode: shop.shopPostalCode || '', logo: shop.logo || '' }) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [shopDetail]) if (shopDetailLoading) { return
در حال بارگذاری...
} if (shopDetailError) { return
خطا در بارگذاری اطلاعات شاپ
} return (

ویرایش اطلاعات شاپ

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

اطلاعات اصلی