diff --git a/src/components/Project/Infrastructure/TaskModel.jsx b/src/components/Project/Infrastructure/TaskModel.jsx index 6282d383..8a703b3a 100644 --- a/src/components/Project/Infrastructure/TaskModel.jsx +++ b/src/components/Project/Infrastructure/TaskModel.jsx @@ -4,7 +4,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { useDispatch } from "react-redux"; import { changeMaster } from "../../../slices/localVariablesSlice"; -import useMaster from "../../../hooks/masterHook/useMaster"; +import useMaster, {useActivitiesMaster} from "../../../hooks/masterHook/useMaster"; const taskSchema = z.object({ buildingID: z.string().min(1, "Building is required"), @@ -40,7 +40,10 @@ const TaskModel = ({ const [selectedWorkArea, setSelectedWorkArea] = useState(null); const [selectedActivity, setSelectedActivity] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); - const [activityData, setActivityData] = useState([]); + const [ activityData, setActivityData ] = useState( [] ); + const {activities: activitiesData, loading, error} = useActivitiesMaster(); + + const { register, @@ -124,11 +127,14 @@ const TaskModel = ({ reset(defaultModel); }; - useEffect(() => { - if (activities && activities.length > 0) { - setActivityData( activities ); - } - }, [activities]); + +useEffect(() => { + if (!loading && Array.isArray(activitiesData) && activitiesData.length > 0) { + + setActivityData(activitiesData); + } +}, [activitiesData, loading]); + return (
diff --git a/src/hooks/masterHook/useMaster.js b/src/hooks/masterHook/useMaster.js index 089f5678..b3588181 100644 --- a/src/hooks/masterHook/useMaster.js +++ b/src/hooks/masterHook/useMaster.js @@ -16,7 +16,7 @@ export const useMasterRole = () => useMasterData("masterRole", MasterRespository.getRoles); -const useMaster = () => { +const useMaster = (isMa) => { const selectedMaster = useSelector((store)=>store.localVariables.selectedMaster); const [data, setData] = useState([]); @@ -78,9 +78,44 @@ const useMaster = () => { return { data, loading, error } }; - - - - export default useMaster; + + +export const useActivitiesMaster = () => +{ + const [ activities, setActivites ] = useState( [] ) + const [ loading, setloading ] = useState( false ); + const [ error, setError ] = useState( "" ) + + const fetchActivities =async () => { + const cacheddata = getCachedData("ActivityMaster"); + + if (!cacheddata) { + setloading(true); + try { + const response = await MasterRespository.getActivites(); + setActivites(response.data); + cacheData("ActivityMaster", response.data); + } catch (err) { + setError(err); + console.log(err); + } finally { + setloading(false); + } + } else { + setActivites(cacheddata); + } + } + useEffect( () => + { + fetchActivities() + }, [] ) + + return {activities,loading,error} +} + + + + +