From e87baafae93756ce77d4b31b3cad3d07b84b663a Mon Sep 17 00:00:00 2001 From: Andrei Duvakin Date: Thu, 13 Feb 2025 21:15:28 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D1=8D=D1=88=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D1=83=20=D0=BF=D0=B0=D1=86=D0=B8=D0=B5=D0=BD=D1=82=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-app/src/pages/PatientsPage.jsx | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) 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({