import React, { Suspense, lazy, useEffect } from "react"; import { Modal, Spin } from "antd"; import FormikForm from "../../Layout/Dashboard/FormikFormModel"; import { getInitialValues, getValidationSchema ,getInitialValuesBase, getValidationSchemaBase, processTags} from "./Model/formUtil"; import { useAddQuestion, useAddQuestionAsync } from "../../api/Question"; import { useTranslation } from "react-i18next"; import { useNavigate, useParams } from "react-router-dom"; import { ParamsEnum } from "../../enums/params"; import { useObjectToEdit } from "../../zustand/ObjectToEditState"; import Header from "../../Components/exercise/Header"; import { Question } from "../../types/Item"; import BaseForm from './Model/Malty/Add' import Form from './Model/Add' import { toast } from "react-toastify"; const AcceptModal = lazy(() => import('./Model/AcceptModal')); import { useModalState } from "../../zustand/Modal"; import { ModalEnum } from "../../enums/Model"; import { cleanObject } from "../../utils/cleanObject"; import { hasItems } from "../../utils/hasItems"; import { QUESTION_OBJECT_KEY } from "../../config/AppKey"; import useSaveOnDisconnect from "../../Hooks/useSaveOnDisconnect"; import { getLocalStorageQuestions } from "../../utils/setLocalStorageQuestions"; const AddPage: React.FC = () => { const {isSuccess:isSuccessAsync,mutateAsync} = useAddQuestionAsync() const { mutate,isSuccess, isLoading} = useAddQuestion(); const {isBseQuestion,set_Tags_search,set_object_to_edit,set_Success,SavedQuestionData} = useObjectToEdit() const {subject_id,lesson_id} = useParams() const { setIsOpen } = useModalState((state) => state); const handleSubmit = (values: any, { resetForm }: { resetForm: () => void }) => { const DataToSend = structuredClone(values); set_Tags_search(null); console.log(isBseQuestion); if (isBseQuestion || DataToSend?.isBase === 1) { const newBseQuestion = { "subject_id": subject_id, "content": DataToSend?.content, "image": DataToSend?.image ?? "", "isBase": 1, "lessons_ids":[lesson_id] }; mutateAsync(newBseQuestion).then((data:any) => { const newBseQuestionId = (data as any)?.data?.id; const Questions = DataToSend?.Questions; console.log(1); Questions?.map((item: Question) => { const tags = processTags(item); console.log(item); mutate({ ...item, parent_id: newBseQuestionId, "subject_id": subject_id, tags, "lessons_ids":[lesson_id] }); }); console.log(newBseQuestionId, "newBseQuestionId"); }); } else { const tags = processTags(DataToSend); mutate({ ...values, subject_id: subject_id, tags , "lessons_ids":[lesson_id] }) } }; const navigate = useNavigate() useEffect(() => { if (isSuccessAsync && ( SavedQuestionData?.Questions?.length > 0 ? isSuccess: true )) { set_object_to_edit(null) set_Success(true) localStorage.removeItem(QUESTION_OBJECT_KEY) } }, [isSuccess,isSuccessAsync]) let cleanedQuestionOptions = cleanObject(SavedQuestionData); let noChange =hasItems(cleanedQuestionOptions) useSaveOnDisconnect(noChange, QUESTION_OBJECT_KEY, SavedQuestionData); const SavedData = getLocalStorageQuestions(QUESTION_OBJECT_KEY) console.log(SavedData); const handleCancel = () => { if(!noChange){ navigate(-1) localStorage.removeItem(QUESTION_OBJECT_KEY) }else{ setIsOpen(ModalEnum?.QUESTION_ACCEPT); } }; const [t] = useTranslation(); console.log(SavedData?.isBase === 1); if(isBseQuestion || SavedData?.isBase === 1){ return (
{t("practical.back")}
}>
); } return (
{t("practical.back")}
}>
); }; export default AddPage;