marco.pms.web/src/hooks/useMasterRole.js
2025-07-06 15:51:46 +05:30

97 lines
2.5 KiB
JavaScript

import { useEffect, useState } from "react";
import { cacheData,getCachedData } from "../slices/apiDataManager";
import { MasterRespository } from "../repositories/MastersRepository";
import { useQuery } from "@tanstack/react-query";
export const useMasterRole =()=>{
const [masterRole, setMasterRole] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState("");
const fetchData = async () => {
try {
const features_cache = getCachedData("masterRole");
if (!features_cache) {
MasterRespository.getRoles()
.then((response) => {
setMasterRole(response.data);
cacheData("masterRole", response.data);
setLoading(false)
})
.catch((error) => {
setError("Failed to fetch data.");
});
}else{
if (!masterRole.length) setMasterRole(features_cache);
}
} catch (err) {
setError("Failed to fetch data.");
} finally {
setLoading(false);
}
};
useEffect(()=>{
fetchData();
},[])
return {masterRole,loading}
}
// export const useFeatures =()=> {
// const [masterFeatures, setMasterFeatures] = useState([]);
// const [loading, setLoading] = useState(true);
// const [error, setError] = useState("");
// const fetchData = async () => {
// try {
// const features_cache = getCachedData("masterFeatures");
// if (!features_cache) {
// MasterRespository.getFeatures()
// .then((response) => {
// setMasterFeatures(response.data);
// cacheData("features", response.data);
// setLoading(false)
// })
// .catch((error) => {
// setError("Failed to fetch data.");
// });
// }else{
// if (!masterFeatures.length) setMasterFeatures(features_cache);
// }
// } catch (err) {
// setError("Failed to fetch data.");
// } finally {
// setLoading(false);
// }
// };
// useEffect(()=>{
// fetchData();
// },[])
// return{masterFeatures,loading}
// }
// -----------------Query- -------------------------
export const useFeatures = () => {
const {data=[],isLoading,error} = useQuery({
queryKey: ["masterFeatures"],
queryFn: async () => {
const response = await MasterRespository.getFeatures();
return response.data;
},
} );
return {
masterFeatures:data,loading:isLoading,error
}
};