access.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. ok();
  29. },
  30. error: err => ok(false),
  31. });
  32. });
  33. });
  34. }
  35. LinkLogin(linkList) {
  36. return new Promise(ok => {
  37. $.ajax({
  38. url: "/api/access/link",
  39. type: "POST",
  40. data: { linkIds: JSON.stringify(Array.from(linkList)) },
  41. success: data => {
  42. for (let i in data)
  43. this.#storedAccess.add(data[i].linkId);
  44. this.#UpdateStorage();
  45. window.ReloadAccessList(data);
  46. ok(data);
  47. },
  48. error: err => ok(false),
  49. });
  50. });
  51. }
  52. async RebuildAccess() {
  53. if (this.#storedAccess.size) {
  54. return LoadingTasks.push(() => {
  55. return this.LinkLogin(this.#storedAccess);
  56. });
  57. } else {
  58. return LoadingTasks.push(() => {
  59. return new Promise(ok => {
  60. $.get("/api/access/list", data => {
  61. for (let i in data)
  62. this.#storedAccess.add(data[i].linkId);
  63. this.#UpdateStorage();
  64. window.ReloadAccessList(data);
  65. ok();
  66. });
  67. });
  68. });
  69. }
  70. }
  71. }
  72. window.AccessManager = new AccessManager();
  73. });