115 lines
3.2 KiB
JavaScript
115 lines
3.2 KiB
JavaScript
import {useState,useEffect} from "react"
|
|
import { MasterRespository } from "../../repositories/MastersRepository";
|
|
import { cacheData,getCachedData } from "../../slices/apiDataManager";
|
|
import { useSelector } from "react-redux";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export const useFeatures = () =>
|
|
useMasterData("masterFeatures", MasterRespository.getFeatures);
|
|
|
|
export const useMasterRole = () =>
|
|
useMasterData("masterRole", MasterRespository.getRoles);
|
|
|
|
|
|
const useMaster = (isMa) => {
|
|
|
|
const selectedMaster = useSelector((store)=>store.localVariables.selectedMaster);
|
|
const [data, setData] = useState([]);
|
|
const [loading, setLoading] = useState(true);
|
|
const [error, setError] = useState("");
|
|
useEffect(() => {
|
|
const fetchData = async () => {
|
|
if (!selectedMaster) return;
|
|
setLoading(true);
|
|
try {
|
|
const cachedData = getCachedData(selectedMaster);
|
|
if (cachedData) {
|
|
|
|
setData(cachedData);
|
|
|
|
} else {
|
|
let response;
|
|
switch (selectedMaster) {
|
|
case "Application Role":
|
|
response = await MasterRespository.getRoles();
|
|
response = response.data;
|
|
break;
|
|
case "Job Role":
|
|
response = await MasterRespository.getJobRole();
|
|
response = response.data
|
|
break;
|
|
case "Activity":
|
|
response = await MasterRespository.getActivites();
|
|
response = response.data
|
|
break;
|
|
case "Status":
|
|
response = [{description: null,featurePermission: null,id: "02dd4761-363c-49ed-8851-3d2489a3e98d",status:"status 1"},{description: null,featurePermission: null,id: "03dy9761-363c-49ed-8851-3d2489a3e98d",status:"status 2"},{description: null,featurePermission: null,id: "03dy7761-263c-49ed-8851-3d2489a3e98d",status:"Status 3"}];
|
|
break;
|
|
default:
|
|
response = [];
|
|
}
|
|
|
|
if (response) {
|
|
setData(response);
|
|
cacheData(selectedMaster, response);
|
|
}
|
|
}
|
|
} catch (err) {
|
|
setError("Failed to fetch data.");
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
};
|
|
|
|
if ( selectedMaster )
|
|
{
|
|
|
|
fetchData();
|
|
}
|
|
|
|
}, [selectedMaster]);
|
|
|
|
|
|
|
|
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}
|
|
} |