presence.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. const presence = new Presence({
  2. clientId: '973027832307535952',
  3. })
  4. const browsingTimestamp = Math.floor(Date.now() / 1000)
  5. presence.on('UpdateData', async () => {
  6. const presenceData: PresenceData = {
  7. largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/S/Stats.fm/assets/logo.png',
  8. startTimestamp: browsingTimestamp,
  9. }
  10. const { pathname } = window.location
  11. switch (true) {
  12. case pathname === '/': {
  13. presenceData.details = 'Browsing the main page'
  14. break
  15. }
  16. case pathname.includes('/album/'): {
  17. presenceData.details = 'Viewing an album'
  18. presenceData.state = document.querySelector('h1.text-center')?.textContent
  19. presenceData.buttons = [
  20. {
  21. label: 'View Album',
  22. url: location.href,
  23. },
  24. ]
  25. break
  26. }
  27. case pathname.includes('/artist/'): {
  28. presenceData.details = 'Viewing an artist'
  29. presenceData.state = document.querySelector('h1.text-center')?.textContent
  30. presenceData.buttons = [
  31. {
  32. label: 'View Artist',
  33. url: location.href,
  34. },
  35. ]
  36. break
  37. }
  38. case pathname.includes('/track/'): {
  39. presenceData.details = 'Viewing stats for a track'
  40. presenceData.state = document.querySelector('h1.text-center')?.textContent
  41. presenceData.buttons = [
  42. {
  43. label: 'View Track',
  44. url: location.href,
  45. },
  46. ]
  47. break
  48. }
  49. case pathname.includes('/beta'): {
  50. presenceData.details = 'Viewing information about the beta'
  51. presenceData.buttons = [
  52. {
  53. label: 'View Page',
  54. url: location.href,
  55. },
  56. ]
  57. break
  58. }
  59. case pathname.includes('/privacy'): {
  60. presenceData.details = 'Reading the Privacy Policy'
  61. presenceData.buttons = [
  62. {
  63. label: 'View Page',
  64. url: location.href,
  65. },
  66. ]
  67. break
  68. }
  69. case pathname.includes('/terms'): {
  70. presenceData.details = 'Reading the Terms & Conditions'
  71. presenceData.buttons = [
  72. {
  73. label: 'View Page',
  74. url: location.href,
  75. },
  76. ]
  77. break
  78. }
  79. }
  80. if (presenceData.details)
  81. presence.setActivity(presenceData)
  82. else presence.setActivity()
  83. })