diff --git a/websites/Y/YouTube Music/presence.ts b/websites/Y/YouTube Music/presence.ts index 3c1f8409c24c..93e8111fd218 100644 --- a/websites/Y/YouTube Music/presence.ts +++ b/websites/Y/YouTube Music/presence.ts @@ -24,14 +24,11 @@ const state = new PresenceState() function attachVideoListeners(videoElement: HTMLMediaElement) { if (state.videoListenerAttached) return - const updateTimestamps = () => { state.mediaTimestamps = updateSongTimestamps(state.dataGetter) } - videoElement.addEventListener('seeked', updateTimestamps) videoElement.addEventListener('play', updateTimestamps) - state.videoListenerAttached = true } @@ -44,7 +41,6 @@ presence.on('UpdateData', async () => { const { pathname, search, href } = document.location const settings = await getSettings(presence) const strings = await presence.getStrings(stringMap) - const mediaData = state.dataGetter.getMediaData() const watchID = state.dataGetter.getWatchId() const repeatMode = state.dataGetter.getRepeatMode() @@ -61,7 +57,19 @@ presence.on('UpdateData', async () => { return presence.clearActivity() } - let presenceData: PresenceData = {} + if (!videoElement) { + if (settings.showBrowsing) { + if (state.oldPath !== pathname) { + state.oldPath = pathname + state.startTimestamp = Math.floor(Date.now() / 1000) + } + return presence.setActivity( + createBrowsingPresence(pathname, search, href, state.startTimestamp, strings, settings.privacyMode), + ) + } + state.prevTitleAuthor = '' + return presence.clearActivity() + } if (['playing', 'paused'].includes(mediaData.playbackState)) { if (settings.privacyMode) { @@ -72,8 +80,9 @@ presence.on('UpdateData', async () => { }) } - if (!mediaData.title || Number.isNaN(videoElement?.duration ?? Number.NaN)) { - return + if (!mediaData.title || Number.isNaN(videoElement.duration)) { + state.prevTitleAuthor = '' + return presence.clearActivity() } const currentTimeText = document @@ -91,30 +100,36 @@ presence.on('UpdateData', async () => { state.mediaTimestamps = updateSongTimestamps(state.dataGetter) if (state.mediaTimestamps[0] === state.mediaTimestamps[1]) { - return + state.prevTitleAuthor = '' + return presence.clearActivity() } - state.prevTitleAuthor = currentMediaIdentifier } - presenceData = createListeningPresence( - mediaData, - state.dataGetter, - settings, - watchID, - repeatMode, - state.mediaTimestamps, - strings, + return presence.setActivity( + createListeningPresence( + mediaData, + state.dataGetter, + settings, + watchID, + repeatMode, + state.mediaTimestamps, + strings, + ), ) } - else if (settings.showBrowsing) { + + state.prevTitleAuthor = '' + + if (settings.showBrowsing) { if (state.oldPath !== pathname) { state.oldPath = pathname state.startTimestamp = Math.floor(Date.now() / 1000) } - - presenceData = createBrowsingPresence(pathname, search, href, state.startTimestamp, strings, settings.privacyMode) + return presence.setActivity( + createBrowsingPresence(pathname, search, href, state.startTimestamp, strings, settings.privacyMode), + ) } - presence.setActivity(presenceData) + return presence.clearActivity() })