добавил кэширование на страницу пациентов
This commit is contained in:
parent
e2c4a0b944
commit
e87baafae9
@ -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({
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user