common.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. $(() => {
  2. function RebuildAccess() {
  3. LoadingTasks.push(() => {
  4. $.get("/api/access/list", data => {
  5. window.ReloadAccessList(data);
  6. });
  7. });
  8. }
  9. let loadingMediaList = false;
  10. function ReadMediaList() {
  11. if (loadingMediaList)
  12. return;
  13. LoadingTasks.push(() => {
  14. return new Promise(ok => {
  15. let chronology = window.chronology.isInitialized() ? "" : "&chronology"
  16. let oldest = (MediaStorage.Instance.oldest?.date?.getTime() || 0);
  17. let oldestArg = oldest ? `&from=${oldest}` : "";
  18. $.get(`/api/media/list?count=25${chronology}${oldestArg}`, data => {
  19. MediaStorage.Instance.pushAll(data.data.map(i => new Media(i)));
  20. if (data.first || data.last)
  21. window.chronology.rebuildRange(data.first, data.last);
  22. loadingMediaList = false;
  23. if ((data.data?.length || 0) < 25) {
  24. loadingMediaList = true;
  25. document.getElementById("pch-infiniteScrollLoading").classList.add("hidden");
  26. }
  27. ok();
  28. });
  29. });
  30. });
  31. }
  32. function loadHash(md5sum) {
  33. if (md5sum && md5sum.length)
  34. LoadingTasks.push(async () => displayMediaFullPage(await MediaStorage.Instance.getMedia(md5sum)));
  35. else
  36. document.getElementById("pch-fullPageMedia").classList.add("hidden");
  37. }
  38. window.addEventListener("hashchange", x => {
  39. x.preventDefault();
  40. loadHash(document.location?.hash?.substr(1))
  41. return true;
  42. });
  43. window.addEventListener("scroll", evt => {
  44. if (window.scrollY+window.innerHeight >= document.body.clientHeight) {
  45. ReadMediaList();
  46. }
  47. });
  48. RebuildAccess();
  49. loadHash(document.location?.hash?.substr(1));
  50. ReadMediaList();
  51. });