// material-ui import { Box, Grid, Typography } from '@mui/material'; import ConsultantForm from "./ConsultantForm"; import {useContext, useEffect, useState} from "react"; import * as React from "react"; import axios from "axios"; import {apiPath} from "../../../auth/utils"; import { GET_CONSULTANT_PATH, } from "../../../utils/ApiPathConst"; import LoadingComponent from "../../extra-pages/LoadingComponent"; import {useLocation, useParams} from "react-router-dom"; import ApplicationTable from "./ApplicationTable"; import MainCard from "../../../components/MainCard"; import AbilityContext from "../../../components/AbilityProvider"; import {LIONER_FORM_THEME, CARD_MAX_WIDTH} from "../../../themes/themeConst"; import {ThemeProvider} from "@emotion/react"; import {isObjEmpty} from "../../../utils/Utils"; import { el } from 'date-fns/locale'; const ConsultantPanel = () => { const { id } = useParams(); const location = useLocation(); const queryParams = new URLSearchParams(location.search); const [onReady, setOnReady] = useState(false); const [isNewRecord, setIsNewRecord] = useState(false); const [consultantDetail, setConsultantDetail] = useState({}); function getConsultantDetail(consultantId) { axios.get(`${apiPath}${GET_CONSULTANT_PATH}/${consultantId}`, ) .then((response) => { if (response.status === 200) { setConsultantDetail(response.data.data); console.log("response.data:" + response.data.name); // This is the correct place to set the ready state setOnReady(true); } }) .catch(error => { console.log(error); // Handle the error by still setting onReady to true, but maybe with a message setOnReady(true); return false; }); } useEffect(() => { // Check if id is defined and not null if(id){ // Check if it's a new record based on a negative ID if (Number(id) < 0) { setIsNewRecord(true); // Set ready state for new records immediately setOnReady(true); } else { setIsNewRecord(false); getConsultantDetail(id); } } else { // This block will handle cases where 'id' is undefined or null // If the route is /consultant without an ID, treat it as a new record. setIsNewRecord(true); setOnReady(true); } }, [id]); useEffect(() => { // This code will only run AFTER the 'onReady' state has been updated. if(consultantDetail) console.log("consultantDetail:" + consultantDetail.name); else console.log("consultantDetail null"); }, [onReady]); // The dependency array ensures this runs when onReady changes. useEffect(() => { // This code will only run AFTER the 'onReady' state has been updated. if (onReady === true) { console.log("The component is now ready!"); } }, [setConsultantDetail]); // The dependency array ensures this runs when onReady changes. return ( !onReady ? : {isNewRecord? "New Consultant" : "Maintain Consultant"} {/*row 1*/} ); }; export default ConsultantPanel;