Merge pull request #22 from olegvodyanov/add_caching
All checks were successful
continuous-integration/drone/push Build is passing

add_caching
This commit is contained in:
Олег Водянов 2025-04-23 13:19:15 +04:00 committed by GitHub
commit 174668e85f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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 => {
localStorage.setItem(cacheKey, JSON.stringify(data));
if (!cached) {
linksData = data.results;
renderPaginatedList(linksData, newLinksContainer, false, data.page, data.pages);
renderPaginatedList(linksData.filter(l => l.watched), watchedLinksContainer, true, data.page, data.pages);
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));
}