diff --git a/web-app/src/pages/PatientsPage.jsx b/web-app/src/pages/PatientsPage.jsx index 124c1a3..ba88d05 100644 --- a/web-app/src/pages/PatientsPage.jsx +++ b/web-app/src/pages/PatientsPage.jsx @@ -24,19 +24,39 @@ const PatientsPage = () => { const [selectedPatient, setSelectedPatient] = useState(null); const [loading, setLoading] = useState(true); + useEffect(() => { + fetchPatientsWithCache(); + }, []); + useEffect(() => { if (!isModalVisible) { - const intervalId = setInterval(fetchPatients, 5000); + const intervalId = setInterval(fetchPatientsWithCache, 5000); return () => clearInterval(intervalId); } }, [user, isModalVisible]); + const fetchPatientsWithCache = async () => { + const cachedData = localStorage.getItem("patientsData"); + const cacheTimestamp = localStorage.getItem("patientsTimestamp"); + + if (cachedData && cacheTimestamp && (Date.now() - parseInt(cacheTimestamp)) < 5 * 60 * 1000) { + setPatients(JSON.parse(cachedData)); + setLoading(false); + return; + } + + await fetchPatients(); + }; + const fetchPatients = async () => { if (!user || !user.token) return; try { const data = await getAllPatients(user.token); setPatients(data); + + localStorage.setItem("patientsData", JSON.stringify(data)); + localStorage.setItem("patientsTimestamp", Date.now().toString()); } catch (error) { console.log(error); notification.error({