import { type FC, useState } from 'react' // import { useTranslation } from 'react-i18next' import Button from '../../components/Button' import { useFormik } from 'formik' import { type CategoryLearningType, type CreateLearningType } from './hooks/useLearningData' import * as Yup from 'yup' import { useCreateLearning, useGetCategory } from './hooks/useLearningData' import { useSingleUpload } from '@/pages/uploader/hooks/useUploader' import { TickCircle } from 'iconsax-react' import Input from '../../components/Input' import UploadBox from '../../components/UploadBox' import Select from '../../components/Select' import Textarea from '../../components/Textarea' import DefaultTableSkeleton from '../../components/DefaultTableSkeleton' import CreateLearningSidebar from './components/CreateLearningSidebar' import { toast } from 'react-toastify' import { useNavigate } from 'react-router-dom' import { Paths } from '../../config/Paths' import { extractErrorMessage } from '@/config/func' const CreateLearning: FC = () => { const navigate = useNavigate() // const { t } = useTranslation('global') const t = (key: string) => key; // Mock translation function const singleUpload = useSingleUpload() const createLearning = useCreateLearning() const getCategory = useGetCategory() const [videoFile, setVideoFile] = useState() const [coverFile, setCoverFile] = useState() const formik = useFormik({ initialValues: { title: '', description: '', coverUrl: '', videoUrl: '', videoDuration: '', categoryId: '' }, validationSchema: Yup.object().shape({ title: Yup.string().required(t('errors.required')), description: Yup.string().required(t('errors.required')), videoDuration: Yup.string().required(t('errors.required')), categoryId: Yup.string().required(t('errors.required')) }), onSubmit: async (values) => { if (videoFile && coverFile) { const videoResult = await singleUpload.mutateAsync(videoFile) values.videoUrl = videoResult?.data?.url ?? '' const coverResult = await singleUpload.mutateAsync(coverFile) values.coverUrl = coverResult?.data?.url ?? '' createLearning.mutate(values, { onSuccess: () => { toast.success('با موفقیت ثبت شد') navigate(Paths.learning.list) }, onError: (error) => { toast.error(extractErrorMessage(error)) } }) } else { toast.error('لطفا ویدیو و کاور را انتخاب کنید') } } }) return (
آموزش جدید
{ getCategory.isPending ? :
setCoverFile(files[0])} />
setVideoFile(files[0])} />
توضیحات