presence.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. const presence = new Presence({
  2. clientId: "690635264124518493",
  3. });
  4. function parseQueryString(queryString?: string): {
  5. [name: string]: string;
  6. } {
  7. queryString ??= window.location.search.substring(1);
  8. const params: {
  9. [name: string]: string;
  10. } = {},
  11. queries = queryString.split("&");
  12. for (const indexQuery in queries) {
  13. const indexPair = indexQuery.split("=");
  14. params[decodeURIComponent(indexPair[0])] = decodeURIComponent(
  15. indexPair.length > 1 ? indexPair[1] : ""
  16. );
  17. }
  18. return params;
  19. }
  20. presence.on("UpdateData", async () => {
  21. const presenceData: PresenceData = {
  22. largeImageKey:
  23. "https://cdn.rcd.gg/PreMiD/websites/Y/Yarn/assets/logo.png",
  24. },
  25. route = document.location.pathname.split("/");
  26. if (document.location.pathname === "/") {
  27. presenceData.details = "Home";
  28. presenceData.state = parseQueryString(document.location.hash).q
  29. ? `Searching ${parseQueryString(document.location.hash).q} (page ${
  30. parseQueryString(document.location.hash).p ?? "0"
  31. })`
  32. : "Navigate...";
  33. presenceData.smallImageKey = parseQueryString(document.location.hash).q
  34. ? Assets.Search
  35. : null;
  36. presenceData.smallImageText = "Searching...";
  37. } else if (document.location.pathname.includes("/package/")) {
  38. presenceData.details = "Watching package";
  39. presenceData.state = !parseQueryString(document.location.hash).files
  40. ? `${document.querySelector("section h2").textContent}`
  41. : document.querySelector("header h2").textContent;
  42. } else if (document.location.pathname.includes("/getting-started")) {
  43. presenceData.details = "Getting Started";
  44. if (route[2] === "install") presenceData.state = "Installation";
  45. else if (route[2] === "usage") presenceData.state = "Usage";
  46. else presenceData.state = "Introduction";
  47. } else if (document.location.pathname.includes("/configuration/")) {
  48. presenceData.details = "Configuration";
  49. if (route[2] === "manifest") presenceData.state = "Manifests";
  50. else if (route[2] === "yarnrc") presenceData.state = "Yarnrc files";
  51. } else if (document.location.pathname.includes("/features/")) {
  52. presenceData.details = "Features";
  53. presenceData.state = document.querySelector("article h1").textContent;
  54. } else if (document.location.pathname.includes("/cli/")) {
  55. presenceData.details = "Cli";
  56. presenceData.state = document.querySelector("article h1 code").textContent;
  57. } else if (document.location.pathname.includes("/advanced/")) {
  58. presenceData.details = "Advanced";
  59. presenceData.state = document.querySelector("article h1").textContent;
  60. }
  61. if (presenceData.details) presence.setActivity(presenceData);
  62. else presence.setActivity();
  63. });