presence.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { resetObservers, Assets, presence, slideshow } from "./util";
  2. import applyMainHostDetails from "./pages/main";
  3. import applyCYLDetails from "./pages/cyl";
  4. import applyFehPassDetails from "./pages/fehpass";
  5. import applyGuideDetails from "./pages/guide";
  6. import applyNewGuideDetails from "./pages/newguide";
  7. import applySupportDetails from "./pages/support";
  8. const browsingTimestamp = Math.floor(Date.now() / 1000);
  9. let oldPath = "";
  10. presence.on("UpdateData", async () => {
  11. const presenceData: PresenceData = {
  12. largeImageKey: Assets.Logo,
  13. startTimestamp: browsingTimestamp,
  14. },
  15. { pathname, hostname } = document.location,
  16. pathList = pathname.split("/").filter(path => path);
  17. if (oldPath !== pathname) {
  18. oldPath = pathname;
  19. resetObservers();
  20. slideshow.deleteAllSlides();
  21. }
  22. switch (true) {
  23. case hostname === "fire-emblem-heroes.com":
  24. applyMainHostDetails(presenceData, pathList.slice(1));
  25. break;
  26. case hostname === "events.fire-emblem-heroes.com":
  27. case /vote\d+[.]campaigns[.]fire-emblem-heroes[.]com/.test(hostname):
  28. case hostname === "support.fire-emblem-heroes.com": {
  29. if (hostname.startsWith("support")) {
  30. if (pathList[0] === "vote" || pathList[0] === "vote2")
  31. await applyCYLDetails(presenceData, pathList.slice(1));
  32. else applySupportDetails(presenceData, pathList);
  33. } else if (hostname.startsWith("vote3"))
  34. await applyCYLDetails(presenceData, pathList);
  35. else await applyCYLDetails(presenceData, pathList.slice(1));
  36. break;
  37. }
  38. case hostname === "fehpass.fire-emblem-heroes.com": {
  39. applyFehPassDetails(presenceData, pathList.slice(1));
  40. break;
  41. }
  42. case hostname === "guide.fire-emblem-heroes.com": {
  43. applyGuideDetails(presenceData, pathList.slice(1));
  44. break;
  45. }
  46. case hostname === "new-guide.fire-emblem-heroes.com": {
  47. applyNewGuideDetails(presenceData);
  48. break;
  49. }
  50. }
  51. if (slideshow.getSlides().length) presence.setActivity(slideshow);
  52. else if (presenceData.details) presence.setActivity(presenceData);
  53. else presence.setActivity();
  54. });