common.js 2.9 KB

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