common.js 2.3 KB

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