made separate useActivityMaster hook that directly calling inside taskModal

This commit is contained in:
Pramod Mahajan 2025-05-03 19:21:43 +05:30
parent 02f37be504
commit b1cb715c84
2 changed files with 53 additions and 12 deletions

View File

@ -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 (
<div className="modal-dialog modal-lg modal-simple modal-edit-user">
<div className="modal-content">

View File

@ -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}
}