presence.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. const presence = new Presence({
  2. clientId: "633805202868273153",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. let user: string | HTMLElement | Element, title: string | HTMLElement | Element;
  6. presence.on("UpdateData", async () => {
  7. const presenceData: PresenceData = {
  8. largeImageKey: "https://cdn.rcd.gg/PreMiD/websites/G/G2A/assets/logo.png",
  9. startTimestamp: browsingTimestamp,
  10. };
  11. switch (document.location.hostname) {
  12. case "www.g2a.com": {
  13. if (document.location.pathname.includes("/wishlist"))
  14. presenceData.details = "Viewing their wishlist";
  15. else if (document.location.pathname.includes("/cart"))
  16. presenceData.details = "Viewing their cart";
  17. else if (document.location.pathname.includes("/search")) {
  18. presenceData.details = "Searching for:";
  19. presenceData.state = (title as HTMLElement).textContent
  20. .replace('" - G2A.COM', "")
  21. .replace('Search results - "', "");
  22. presenceData.smallImageKey = Assets.Search;
  23. } else if (document.location.pathname.includes("/category")) {
  24. presenceData.details = "Viewing category:";
  25. title = document.querySelector("head > title");
  26. presenceData.state = (title as HTMLElement).textContent.replace(
  27. " - G2A.COM",
  28. ""
  29. );
  30. } else if (
  31. document.querySelector(
  32. "#app > div > div.content > div > article > header > div > div > h1 > span"
  33. ) !== null
  34. ) {
  35. presenceData.details = "Viewing item:";
  36. title = document.querySelector(
  37. "#app > div > div.content > div > article > header > div > div > h1 > span"
  38. );
  39. presenceData.state = (title as HTMLElement).textContent;
  40. } else if (document.location.pathname.includes("/user")) {
  41. presenceData.details = "Viewing user:";
  42. user = document.querySelector(
  43. "#app > div > div.content > div > div > div > section > div.user-info > button > strong"
  44. );
  45. presenceData.state = (user as HTMLElement).textContent;
  46. } else if (document.location.pathname.includes("/goldmine"))
  47. presenceData.details = "Using the goldmine";
  48. else if (document.location.pathname.includes("/news/")) {
  49. title = document.querySelector(
  50. "body > div.single-article.single-article--feature.default-template > div.review-top > div.review-top__wrapper > div > header > h1"
  51. );
  52. if (!title) presenceData.details = "Browsing news section";
  53. else {
  54. presenceData.details = "News - Reading:";
  55. presenceData.state = (title as HTMLElement).textContent;
  56. presenceData.smallImageKey = Assets.Reading;
  57. }
  58. }
  59. break;
  60. }
  61. case "id.g2a.com": {
  62. presenceData.details = "Viewing their account details";
  63. break;
  64. }
  65. case "dashboard.g2a.com": {
  66. presenceData.details = "Viewing their dashboard";
  67. break;
  68. }
  69. case "pay.g2a.com": {
  70. presenceData.details = "Using G2A Pay";
  71. break;
  72. }
  73. case "plus.g2a.com": {
  74. presenceData.details = "G2A Plus - Viewing:";
  75. title = document.querySelector("head > title");
  76. presenceData.state = (title as HTMLElement).textContent.replace(
  77. " - G2A Plus",
  78. ""
  79. );
  80. break;
  81. }
  82. case "loot.g2a.com": {
  83. if (document.location.pathname === "/")
  84. presenceData.details = "Browsing G2A Loot";
  85. else {
  86. presenceData.details = "G2A Loot - Viewing:";
  87. title = document.querySelector("head > title");
  88. presenceData.state = (title as HTMLElement).textContent.replace(
  89. " - G2A Loot",
  90. ""
  91. );
  92. }
  93. break;
  94. }
  95. // No default
  96. }
  97. if (presenceData.details) presence.setActivity(presenceData);
  98. else presence.setActivity();
  99. });