presence.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. const presence = new Presence({
  2. clientId: "941298758598164481",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. presence.on("UpdateData", async () => {
  6. const presenceData: PresenceData = {
  7. largeImageKey:
  8. "https://cdn.rcd.gg/PreMiD/websites/W/WayBack%20Machine/assets/logo.png",
  9. startTimestamp: browsingTimestamp,
  10. },
  11. { pathname, href } = window.location,
  12. split = pathname.split("/")[2],
  13. search = document.querySelector<HTMLInputElement>(
  14. "#react-wayback-search > div.search-toolbar > div.search-text-container > form > div > div > input.rbt-input-main.form-control.rbt-input"
  15. ),
  16. buttons = await presence.getSetting<boolean>("buttons");
  17. switch (pathname.split("/")[1]) {
  18. case "": {
  19. if (!search?.value) presenceData.details = "Viewing the home page";
  20. else {
  21. presenceData.details = "Searching for";
  22. presenceData.state = search.value;
  23. presenceData.smallImageKey = Assets.Search;
  24. }
  25. break;
  26. }
  27. case "web": {
  28. if (
  29. document.querySelector('[class="search-size"]') ||
  30. document.querySelector('[class="captures-range-info"]')
  31. ) {
  32. // if calendar or results
  33. presenceData.details = "Viewing results for";
  34. presenceData.state =
  35. document.querySelector('[class="snippet"]')?.textContent ??
  36. document
  37. .querySelector('[title*="Calendar of "]')
  38. .getAttribute("title")
  39. .replace("Calendar of ", "")
  40. .split("/")[2];
  41. } else {
  42. // if on site
  43. presenceData.largeImageKey =
  44. document.querySelector<HTMLMetaElement>('[property="og:image"]')
  45. ?.content ??
  46. "https://cdn.rcd.gg/PreMiD/websites/W/WayBack%20Machine/assets/logo.png";
  47. presenceData.details = document.location.pathname
  48. .split("/")[5]
  49. .replace("www.", "");
  50. presenceData.state = `${split.substring(6, 8)}/${split.substring(
  51. 4,
  52. 6
  53. )}/${split.substring(0, 4)} ${split.substring(8, 10)}:${split.substring(
  54. 10,
  55. 12
  56. )}:${split.substring(12, 14)}`;
  57. }
  58. presenceData.buttons = [
  59. {
  60. label: "View Page",
  61. url: href,
  62. },
  63. ];
  64. break;
  65. }
  66. case "details": {
  67. presenceData.details = "Viewing results for";
  68. presenceData.state = document
  69. .querySelector('[class="result-headline text-center"]')
  70. ?.textContent.slice(4);
  71. presenceData.buttons = [
  72. {
  73. label: "View Page",
  74. url: href,
  75. },
  76. ];
  77. break;
  78. }
  79. }
  80. if (!buttons) delete presenceData.buttons;
  81. if (presenceData.details) presence.setActivity(presenceData);
  82. else presence.setActivity();
  83. });