$(() => { function RebuildAccess() { LoadingTasks.push(() => { $.get("/api/access/list", data => { window.ReloadAccessList(data); }); }); } let loadingMediaList = false; function ReadMediaList() { if (loadingMediaList) return; LoadingTasks.push(() => { return new Promise(ok => { let chronology = window.chronology.isInitialized() ? "" : "&chronology" let oldest = (MediaStorage.Instance.oldest?.date?.getTime() || 0); let oldestArg = oldest ? `&from=${oldest}` : ""; $.get(`/api/media/list?count=25${chronology}${oldestArg}`, data => { MediaStorage.Instance.pushAll(data.data.map(i => new Media(i))); if (data.first || data.last) window.chronology.rebuildRange(data.first, data.last); loadingMediaList = false; if ((data.data?.length || 0) < 25) { loadingMediaList = true; document.getElementById("pch-infiniteScrollLoading").classList.add("hidden"); } ok(); }); }); }); } function loadHash(md5sum) { if (md5sum && md5sum.length) LoadingTasks.push(async () => displayMediaFullPage(await MediaStorage.Instance.getMedia(md5sum))); else document.getElementById("pch-fullPageMedia").classList.add("hidden"); } window.addEventListener("hashchange", x => { x.preventDefault(); loadHash(document.location?.hash?.substr(1)) return true; }); window.addEventListener("scroll", evt => { if (window.scrollY+window.innerHeight >= document.body.clientHeight) { ReadMediaList(); } }); RebuildAccess(); loadHash(document.location?.hash?.substr(1)); ReadMediaList(); });