presence.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { Assets } from 'premid'
  2. const presence = new Presence({
  3. clientId: '844109673618735144',
  4. })
  5. const browsingTimestamp = Math.floor(Date.now() / 1000)
  6. presence.on('UpdateData', async () => {
  7. const presenceData: PresenceData = {
  8. largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/Y/Yahoo%20Mail/assets/logo.png',
  9. startTimestamp: browsingTimestamp,
  10. }
  11. const privacy = await presence.getSetting('privacy')
  12. const { pathname } = document.location
  13. if (document.querySelector('[data-test-id="message-group-subject-text"]')) {
  14. presenceData.details = 'Reading an email'
  15. presenceData.smallImageKey = Assets.Reading
  16. }
  17. else if (
  18. document.querySelector<HTMLInputElement>('[role="combobox"]')?.value
  19. ) {
  20. presenceData.details = 'Searching'
  21. presenceData.smallImageKey = Assets.Search
  22. }
  23. else if (document.querySelector('[data-test-id="recipient-input"]')) {
  24. presenceData.details = 'Composing an email'
  25. }
  26. else if (privacy) {
  27. if (pathname.includes('/folders/') || pathname.includes('/search/')) {
  28. if (pathname.includes('messages'))
  29. presenceData.details = 'Viewing an email'
  30. else presenceData.details = 'Viewing mail'
  31. }
  32. else {
  33. presenceData.details = 'Browsing'
  34. }
  35. }
  36. else if (document.querySelector('[data-test-is-active="true"]')) {
  37. presenceData.details = `Viewing ${document
  38. .querySelector('[data-test-is-active="true"]')
  39. ?.textContent
  40. ?.replace(/\d*/g, '')}`
  41. }
  42. else {
  43. presenceData.details = 'Browsing'
  44. }
  45. presence.setActivity(presenceData)
  46. })