From 6e20d9c3f972a3dcc842cff5663e5573c9231007 Mon Sep 17 00:00:00 2001 From: "oleg.vodyanov91@gmail.com" Date: Wed, 23 Apr 2025 13:18:54 +0400 Subject: [PATCH] add_caching --- static/links/main.js | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/static/links/main.js b/static/links/main.js index 9714f2a..289348b 100644 --- a/static/links/main.js +++ b/static/links/main.js @@ -5,14 +5,37 @@ const watchedLinksContainer = document.getElementById('watchedLinksContainer'); const PER_PAGE = 8; let currentPage = 1; +let linksData = []; function loadLinks() { + const cacheKey = `links_cache_page_${currentPage}_per_${PER_PAGE}`; + const cached = localStorage.getItem(cacheKey); + + if (cached) { + const data = JSON.parse(cached); + linksData = data.results; + renderPaginatedList( + linksData.filter(l => !l.watched),newLinksContainer,false,data.page,data.pages + ); + renderPaginatedList( + linksData.filter(l => l.watched),watchedLinksContainer,true,data.page,data.pages + ); + } + + // Always fetch fresh data in the background fetch(`/api/links/?page=${currentPage}&per_page=${PER_PAGE}`) .then(res => res.json()) .then(data => { - linksData = data.results; - renderPaginatedList(linksData, newLinksContainer, false, data.page, data.pages); - renderPaginatedList(linksData.filter(l => l.watched), watchedLinksContainer, true, data.page, data.pages); + localStorage.setItem(cacheKey, JSON.stringify(data)); + if (!cached) { + linksData = data.results; + renderPaginatedList( + linksData.filter(l => !l.watched),newLinksContainer,false,data.page,data.pages + ); + renderPaginatedList( + linksData.filter(l => l.watched),watchedLinksContainer,true,data.page,data.pages + ); + } }) .catch(err => console.error(err)); }