1
0

access.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. $(() => {
  2. class AccessManager {
  3. #storedAccess = new Set();
  4. constructor() {
  5. this.#storedAccess.clear();
  6. let storedAccess = [];
  7. try {
  8. storedAccess = (JSON.parse(localStorage?.getItem("accessLinks") || "[]") || []);
  9. } catch (err) {
  10. console.error(err);
  11. }
  12. storedAccess.forEach(i => this.#storedAccess.add(i));
  13. }
  14. #UpdateStorage() {
  15. localStorage?.setItem("accessLinks", JSON.stringify(Array.from(this.#storedAccess)));
  16. }
  17. Logout(code) {
  18. if (!this.#storedAccess.delete(code))
  19. return;
  20. this.#UpdateStorage();
  21. return LoadingTasks.push(() => {
  22. return new Promise(ok => {
  23. $.ajax({
  24. url: `/api/access/${code}`,
  25. type: "DELETE",
  26. success: data => {
  27. window.ReloadAccessList(data);
  28. MediaStorage.Instance.rebuildMetaList();
  29. ok();
  30. },
  31. error: err => ok(false),
  32. });
  33. });
  34. });
  35. }
  36. LinkLogin(linkList) {
  37. return new Promise(ok => {
  38. $.ajax({
  39. url: "/api/access/link",
  40. type: "POST",
  41. data: { linkIds: JSON.stringify(Array.from(linkList)) },
  42. success: data => {
  43. for (let i in data)
  44. this.#storedAccess.add(data[i].linkId);
  45. this.#UpdateStorage();
  46. window.ReloadAccessList(data);
  47. MediaStorage.Instance.rebuildMetaList();
  48. ok(data);
  49. },
  50. error: err => ok(false),
  51. });
  52. });
  53. }
  54. async RebuildAccess() {
  55. if (this.#storedAccess.size) {
  56. return LoadingTasks.push(() => {
  57. return this.LinkLogin(this.#storedAccess);
  58. });
  59. } else {
  60. return LoadingTasks.push(() => {
  61. return new Promise(ok => {
  62. $.get("/api/access/list", data => {
  63. for (let i in data)
  64. this.#storedAccess.add(i);
  65. this.#UpdateStorage();
  66. window.ReloadAccessList(data);
  67. MediaStorage.Instance.rebuildMetaList();
  68. ok();
  69. });
  70. });
  71. });
  72. }
  73. }
  74. }
  75. window.AccessManager = new AccessManager();
  76. });