presence.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import { Assets } from 'premid'
  2. const presence = new Presence({
  3. clientId: '911546577485725706',
  4. })
  5. const browsingTimestamp = Math.floor(Date.now() / 1000)
  6. enum ActivityAssets {
  7. Logo = 'https://cdn.rcd.gg/PreMiD/websites/S/Salad/assets/0.gif',
  8. }
  9. presence.on('UpdateData', async () => {
  10. const presenceData: PresenceData = {
  11. largeImageKey: ActivityAssets.Logo,
  12. startTimestamp: browsingTimestamp,
  13. }
  14. const privacy = await presence.getSetting<boolean>('privacy')
  15. const { hostname, pathname } = document.location
  16. if (hostname.startsWith('support')) {
  17. if (pathname.includes('troubleshooting')) {
  18. presenceData.state = 'Troubleshooting'
  19. }
  20. else if (pathname.includes('app-guides')) {
  21. presenceData.state = 'App guides'
  22. }
  23. else if (pathname.includes('faq')) {
  24. presenceData.state = 'The faq'
  25. }
  26. else if (pathname.includes('company')) {
  27. presenceData.state = 'Company'
  28. }
  29. else if (pathname.includes('article')) {
  30. presenceData.details = privacy
  31. ? 'Support - reading an article'
  32. : 'Support - Reading article'
  33. presenceData.state = document.querySelector('.title')?.textContent
  34. presenceData.smallImageKey = Assets.Reading
  35. }
  36. else if (pathname.includes('category')) {
  37. presenceData.details = privacy
  38. ? 'Support - viewing an article category'
  39. : 'Support - viewing article category'
  40. presenceData.state = document.querySelector('.title')?.textContent
  41. presenceData.smallImageKey = Assets.Search
  42. }
  43. else {
  44. presenceData.state = 'Home'
  45. }
  46. if (!presenceData.details) {
  47. presenceData.details = privacy
  48. ? 'Support - viewing'
  49. : 'Support - browsing'
  50. }
  51. }
  52. else if (hostname.startsWith('community')) {
  53. if (pathname.includes('-')) {
  54. presenceData.details = privacy
  55. ? 'Community - reading a blog post'
  56. : 'Community - reading about'
  57. presenceData.state = document.querySelector('.xpro-post-title')?.textContent
  58. presenceData.smallImageKey = Assets.Reading
  59. }
  60. else {
  61. presenceData.details = 'Community - Browsing...'
  62. presenceData.smallImageKey = Assets.Search
  63. }
  64. }
  65. else if (pathname.includes('/earn/summary')) {
  66. presenceData.details = privacy
  67. ? 'Viewing their summary'
  68. : 'Summary - earnings'
  69. presenceData.state = `Balance: ${
  70. document.querySelector('.c0116')?.textContent
  71. }`
  72. }
  73. else if (pathname.includes('/account/')) {
  74. presenceData.details = privacy
  75. ? 'Viewing their account settings'
  76. : 'Account - viewing'
  77. if (pathname.endsWith('/summary'))
  78. presenceData.state = 'Account management'
  79. else if (pathname.endsWith('/referrals'))
  80. presenceData.state = 'Referrals'
  81. else if (pathname.endsWith('/bonuses'))
  82. presenceData.state = 'Bonuses'
  83. }
  84. else if (pathname.includes('/rewards/')) {
  85. presenceData.details = privacy
  86. ? 'Store - viewing all items'
  87. : 'Store - Viewing'
  88. presenceData.state = document?.title?.split('|')?.[0]
  89. presenceData.smallImageKey = Assets.Viewing
  90. }
  91. else if (pathname.endsWith('/store')) {
  92. presenceData.details = 'Store - browsing'
  93. presenceData.smallImageKey = Assets.Search
  94. }
  95. else if (pathname.includes('/search')) {
  96. presenceData.details = privacy
  97. ? 'Store - searching for something'
  98. : 'Store - searching for'
  99. presenceData.state = `Searching for ${
  100. document.querySelector<HTMLInputElement>('[placeholder="SEARCH"]')?.value
  101. }`
  102. presenceData.smallImageKey = Assets.Search
  103. }
  104. else if (pathname.endsWith('/download')) {
  105. presenceData.details = 'Viewing the download page'
  106. }
  107. else if (pathname.endsWith('/vault')) {
  108. presenceData.details = 'Vault - viewing their vault'
  109. }
  110. if (privacy && presenceData.state)
  111. delete presenceData.state
  112. presence.setActivity(presenceData)
  113. })