presence.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const presence = new Presence({
  2. clientId: "1017593958546821160",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. presence.on("UpdateData", () => {
  6. const presenseData: PresenceData = {
  7. largeImageKey:
  8. "https://cdn.rcd.gg/PreMiD/websites/M/MusicBrainz%20Picard/assets/logo.png",
  9. startTimestamp: browsingTimestamp,
  10. },
  11. { hostname, pathname } = window.location;
  12. switch (hostname) {
  13. case "picard.musicbrainz.org": {
  14. presenseData.details = "Browsing...";
  15. switch (pathname.split("/")[1]) {
  16. case "": {
  17. presenseData.state = "Home page";
  18. break;
  19. }
  20. case "docs": {
  21. presenseData.details = "Browsing documentation";
  22. presenseData.state = document.querySelector("h1").textContent;
  23. break;
  24. }
  25. default: {
  26. presenseData.state = document.title.match(
  27. /(.*?)( - MusicBrainz Picard$|$)/
  28. )[1];
  29. }
  30. }
  31. break;
  32. }
  33. case "picard-docs.musicbrainz.org": {
  34. presenseData.details = "Browsing documentation...";
  35. if (pathname.match(/^(?:\/v[\d.]+)?\/[a-z]{2}\/(.*)/)[1] === "index.html")
  36. presenseData.state = "Home page";
  37. else {
  38. const { textContent } = document.querySelector("h1");
  39. presenseData.state = textContent.substring(0, textContent.length - 1);
  40. }
  41. break;
  42. }
  43. }
  44. presence.setActivity(presenseData);
  45. });