From b6d902e425dcfedc2c76f2e657e19a6cbc5ba5fc Mon Sep 17 00:00:00 2001 From: Lyall <58636255+Lyall-A@users.noreply.github.com> Date: Sat, 28 Jun 2025 21:46:12 +0100 Subject: [PATCH] fix: discord presence not clearing after pausing player (#973) * add show rich presence when paused option --- src/i18n/locales/en.json | 2 ++ .../features/discord-rpc/use-discord-rpc.ts | 10 ++++++-- .../components/window/discord-settings.tsx | 23 +++++++++++++++++++ src/renderer/store/settings.store.ts | 2 ++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 66325279..a1a0da50 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -514,6 +514,8 @@ "disableLibraryUpdateOnStartup": "disable checking for new versions on startup", "discordApplicationId": "{{discord}} application id", "discordApplicationId_description": "the application id for {{discord}} rich presence (defaults to {{defaultId}})", + "discordPausedStatus": "show rich presence when paused", + "discordPausedStatus_description": "when enabled, status will show when player is paused", "discordIdleStatus": "show rich presence idle status", "discordIdleStatus_description": "when enabled, update status while player is idle", "discordListening": "show status as listening", diff --git a/src/renderer/features/discord-rpc/use-discord-rpc.ts b/src/renderer/features/discord-rpc/use-discord-rpc.ts index eeac9105..7c1993af 100644 --- a/src/renderer/features/discord-rpc/use-discord-rpc.ts +++ b/src/renderer/features/discord-rpc/use-discord-rpc.ts @@ -24,8 +24,13 @@ export const useDiscordRpc = () => { current: (number | PlayerStatus | QueueSong | undefined)[], previous: (number | PlayerStatus | QueueSong | undefined)[], ) => { - // No current song, or we switched to a new track and the player was paused (end of album, etc.) - if (!current[0] || (current[0] && current[2] === 'paused' && current[1] === 0)) + if ( + !current[0] || // No track + (current[0] && + current[2] === 'paused' && // Track paused + (discordSettings.showPaused ? current[1] === 0 : true)) || // Beginning of track (only if show paused setting enabled) + (discordSettings.showPaused ? false : current[1] === 0) // Beginning of track (only if show paused setting disabled) + ) return discordRpc?.clearActivity(); // Handle change detection @@ -122,6 +127,7 @@ export const useDiscordRpc = () => { [ discordSettings.showAsListening, discordSettings.showServerImage, + discordSettings.showPaused, generalSettings.lastfmApiKey, lastUniqueId, ], diff --git a/src/renderer/features/settings/components/window/discord-settings.tsx b/src/renderer/features/settings/components/window/discord-settings.tsx index 5ad4887f..af8ce176 100644 --- a/src/renderer/features/settings/components/window/discord-settings.tsx +++ b/src/renderer/features/settings/components/window/discord-settings.tsx @@ -74,6 +74,29 @@ export const DiscordSettings = () => { postProcess: 'sentenceCase', }), }, + { + control: ( + { + setSettings({ + discord: { + ...settings, + showPaused: e.currentTarget.checked, + }, + }); + }} + /> + ), + description: t('setting.discordPausedStatus', { + context: 'description', + postProcess: 'sentenceCase', + }), + isHidden: !isElectron(), + title: t('setting.discordPausedStatus', { + postProcess: 'sentenceCase', + }), + }, { control: (