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)); }