presence.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. const presence = new Presence({
  2. clientId: '1319468567405662209',
  3. })
  4. const browsingTimestamp = Math.floor(Date.now() / 1000)
  5. enum ActivityAssets {
  6. Logo = 'https://cdn.rcd.gg/PreMiD/websites/S/StudyStream/assets/logo.png',
  7. }
  8. presence.on('UpdateData', async () => {
  9. const presenceData: PresenceData = {
  10. largeImageKey: ActivityAssets.Logo,
  11. startTimestamp: browsingTimestamp,
  12. }
  13. const path = document.location.pathname
  14. const paths = {
  15. focus: '/focus',
  16. profile: '/profile',
  17. focusBuddies: '/focus-buddies',
  18. conversations: '/conversations',
  19. groups: '/groups',
  20. leaderboards: '/leaderboards',
  21. focusSessions: '/focus-sessions',
  22. }
  23. const translatedStrings = await presence.getStrings({
  24. browsing: 'general.browsing',
  25. viewingAProfile: 'general.viewAProfile',
  26. })
  27. const hardCodedStrings = {
  28. inAFocusRoom: 'In a focus room',
  29. searchingForABuddy: 'Searching for a buddy',
  30. viewingDMs: 'Chatting',
  31. joiningAGroup: 'Joining a group',
  32. lookingAtLeaderboards: 'Looking at leaderboards',
  33. schedulingASession: 'Booking a focus session',
  34. }
  35. presenceData.details = translatedStrings.browsing
  36. if (path.startsWith(paths.focus))
  37. presenceData.details = hardCodedStrings.inAFocusRoom
  38. if (path.startsWith(paths.profile))
  39. presenceData.details = translatedStrings.viewingAProfile
  40. if (path.startsWith(paths.focusBuddies))
  41. presenceData.details = hardCodedStrings.searchingForABuddy
  42. if (path.startsWith(paths.conversations))
  43. presenceData.details = hardCodedStrings.viewingDMs
  44. if (path.startsWith(paths.groups))
  45. presenceData.details = hardCodedStrings.joiningAGroup
  46. if (path.startsWith(paths.leaderboards))
  47. presenceData.details = hardCodedStrings.lookingAtLeaderboards
  48. if (path.startsWith(paths.focusSessions))
  49. presenceData.details = hardCodedStrings.schedulingASession
  50. presence.setActivity(presenceData)
  51. })