From d34ccfb33c1833269d685e81f3bb37a2e46668d9 Mon Sep 17 00:00:00 2001 From: Pramod Mahajan Date: Sun, 4 May 2025 02:47:50 +0530 Subject: [PATCH] Move project filtering logic into useProjects hook; remove redundant UI filtering --- src/hooks/useProjects.js | 68 ++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/src/hooks/useProjects.js b/src/hooks/useProjects.js index 16af5c78..b91c88a6 100644 --- a/src/hooks/useProjects.js +++ b/src/hooks/useProjects.js @@ -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 }; };