Move project filtering logic into useProjects hook; remove redundant UI filtering

This commit is contained in:
Pramod Mahajan 2025-05-04 02:47:50 +05:30
parent bbb02009b2
commit d34ccfb33c

View File

@ -14,54 +14,46 @@ export const useProjects = () =>
const [error, setError] = useState("");
const fetchData = async () => {
const projectIds = profile?.projects || [];
const filterProjects = (projectsList) => {
return projectsList
.filter((proj) => projectIds.includes(String(proj.id)))
.sort((a, b) => a.name.localeCompare(b.name));
};
const projects_cache = getCachedData("projectslist");
if (!projects_cache) {
setLoading(true);
ProjectRepository.getProjectList()
.then((response) => {
let projects = response.data;
const sortedProject = [...projects].sort((a, b) =>
a.name.localeCompare(b.name)
);
setProjects(sortedProject);
cacheData( "projectslist", sortedProject );
setLoading(false);
})
.catch((error) => {
setLoading(false);
setError("Failed to fetch data.");
});
try {
const response = await ProjectRepository.getProjectList();
const allProjects = response.data;
const filtered = filterProjects(allProjects);
setProjects(filtered);
cacheData("projectslist", allProjects);
} catch (err) {
setError("Failed to fetch data.");
} finally {
setLoading(false);
}
} else {
if (!projects.length) {
let projects = projects_cache;
const sortedProject = [...projects].sort((a, b) =>
a.name.localeCompare(b.name)
);
setProjects( sortedProject );
const filtered = filterProjects(projects_cache);
setProjects(filtered);
}
}
};
useEffect(() => {
useEffect( () =>
{
if ( profile )
{
fetchData();
}, []);
// useEffect( () =>
// {
// if (projects )
// {
// if ( profile?.projects && profile?.projects?.length > 0 )
// {
// dispatch(setProjectId(profile?.projects[0]))
// } else
// {
// dispatch(setProjectId(1))
// }
// }
// }, [profile]);
}
}, [profile]);
return { projects, loading, error, refetch: fetchData };
};