diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 549bba02..ccb4377b 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -468,6 +468,8 @@ "discordApplicationId_description": "the application id for {{discord}} rich presence (defaults to {{defaultId}})", "discordIdleStatus": "show rich presence idle status", "discordIdleStatus_description": "when enabled, update status while player is idle", + "discordListening": "show status as listening", + "discordListening_description": "show status as listening instead of playing. note that this currently breaks timer bar", "discordRichPresence": "{{discord}} rich presence", "discordRichPresence_description": "enable playback status in {{discord}} rich presence. Image keys are: {{icon}}, {{playing}}, and {{paused}} ", "discordUpdateInterval": "{{discord}} rich presence update interval", diff --git a/src/renderer/features/discord-rpc/use-discord-rpc.ts b/src/renderer/features/discord-rpc/use-discord-rpc.ts index 0489f70f..7b20e546 100644 --- a/src/renderer/features/discord-rpc/use-discord-rpc.ts +++ b/src/renderer/features/discord-rpc/use-discord-rpc.ts @@ -45,7 +45,7 @@ export const useDiscordRpc = () => { state: (artists && `By ${artists}`) || 'Unknown artist', // I would love to use the actual type as opposed to hardcoding to 2, // but manually installing the discord-types package appears to break things - type: 2, + type: discordSettings.showAsListening ? 2 : 0, }; if (currentStatus === PlayerStatus.PLAYING) { @@ -73,7 +73,13 @@ export const useDiscordRpc = () => { } discordRpc?.setActivity(activity); - }, [currentSong, currentStatus, discordSettings.enableIdle, discordSettings.showServerImage]); + }, [ + currentSong, + currentStatus, + discordSettings.enableIdle, + discordSettings.showAsListening, + discordSettings.showServerImage, + ]); useEffect(() => { const initializeDiscordRpc = async () => { diff --git a/src/renderer/features/settings/components/window/discord-settings.tsx b/src/renderer/features/settings/components/window/discord-settings.tsx index f30fd459..6b162346 100644 --- a/src/renderer/features/settings/components/window/discord-settings.tsx +++ b/src/renderer/features/settings/components/window/discord-settings.tsx @@ -119,6 +119,29 @@ export const DiscordSettings = () => { postProcess: 'sentenceCase', }), }, + { + control: ( + { + setSettings({ + discord: { + ...settings, + showAsListening: e.currentTarget.checked, + }, + }); + }} + /> + ), + description: t('setting.discordListening', { + context: 'description', + postProcess: 'sentenceCase', + }), + isHidden: !isElectron(), + title: t('setting.discordListening', { + postProcess: 'sentenceCase', + }), + }, ]; return ; diff --git a/src/renderer/store/settings.store.ts b/src/renderer/store/settings.store.ts index 9f22d992..ccd17e6e 100644 --- a/src/renderer/store/settings.store.ts +++ b/src/renderer/store/settings.store.ts @@ -181,6 +181,7 @@ export interface SettingsState { clientId: string; enableIdle: boolean; enabled: boolean; + showAsListening: boolean; showServerImage: boolean; updateInterval: number; }; @@ -306,6 +307,7 @@ const initialState: SettingsState = { clientId: '1165957668758900787', enableIdle: false, enabled: false, + showAsListening: false, showServerImage: false, updateInterval: 15, },