From b1cb715c845480ca355ee634c6fe2076ca4237f4 Mon Sep 17 00:00:00 2001 From: Pramod Mahajan Date: Sat, 3 May 2025 19:21:43 +0530 Subject: [PATCH 1/2] made separate useActivityMaster hook that directly calling inside taskModal --- .../Project/Infrastructure/TaskModel.jsx | 20 ++++++--- src/hooks/masterHook/useMaster.js | 45 ++++++++++++++++--- 2 files changed, 53 insertions(+), 12 deletions(-) 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} +} + + + + + -- 2.43.0 From 1fea83b6293d4307b0813040ba66e874b8c63a5c Mon Sep 17 00:00:00 2001 From: Pramod Mahajan Date: Sun, 4 May 2025 00:01:02 +0530 Subject: [PATCH 2/2] removed useMaster and dispatch from TaskModel after switching to useActivitiesMaster --- .../Project/Infrastructure/TaskModel.jsx | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/components/Project/Infrastructure/TaskModel.jsx b/src/components/Project/Infrastructure/TaskModel.jsx index 8a703b3a..d6f7fbce 100644 --- a/src/components/Project/Infrastructure/TaskModel.jsx +++ b/src/components/Project/Infrastructure/TaskModel.jsx @@ -2,9 +2,7 @@ import React, { useState, useEffect } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; -import { useDispatch } from "react-redux"; -import { changeMaster } from "../../../slices/localVariablesSlice"; -import useMaster, {useActivitiesMaster} from "../../../hooks/masterHook/useMaster"; +import {useActivitiesMaster} from "../../../hooks/masterHook/useMaster"; const taskSchema = z.object({ buildingID: z.string().min(1, "Building is required"), @@ -32,8 +30,6 @@ const TaskModel = ({ onClearComplete, onClose, }) => { - const dispatch = useDispatch(); - const { data: activities } = useMaster(); const [formData, setFormData] = useState(defaultModel); const [selectedBuilding, setSelectedBuilding] = useState(null); const [selectedFloor, setSelectedFloor] = useState(null); @@ -41,7 +37,7 @@ const TaskModel = ({ const [selectedActivity, setSelectedActivity] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const [ activityData, setActivityData ] = useState( [] ); - const {activities: activitiesData, loading, error} = useActivitiesMaster(); + const {activities, loading, error} = useActivitiesMaster(); @@ -57,7 +53,6 @@ const TaskModel = ({ }); useEffect(() => { - dispatch(changeMaster("Activity")); resetForm(); }, []); @@ -129,11 +124,11 @@ const TaskModel = ({ useEffect(() => { - if (!loading && Array.isArray(activitiesData) && activitiesData.length > 0) { + if (!loading && Array.isArray(activities) && activities.length > 0) { - setActivityData(activitiesData); + setActivityData(activities); } -}, [activitiesData, loading]); +}, [activities, loading]); return (
@@ -280,7 +275,7 @@ useEffect(() => { )) ) : ( - // Fallback if activities are empty + )} @@ -290,7 +285,6 @@ useEffect(() => {
)} - {/* Planned Work */} {selectedActivity && (
)} - {/* Completed Work */} {selectedActivity && (