Feature: Add song and artist links to discord RPC (#1160)

* Add song and artist links to discord RPC

* use first artist name for artist link, full artist name for song link

* use first album artist for song link

* add discord rpc links setting

* simplify discord link settings

* fix setting description

* add musicbrainz links

* fix callback missing dependency

* use encodeURIComponent for lastfm links

Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>

* split musicbrainz ids

* combine link settings

---------

Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
This commit is contained in:
Evelyn Gravett 2025-10-04 04:27:59 +01:00 committed by GitHub
parent f1a75d8e81
commit 1b278cb33a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 108 additions and 6 deletions

View file

@ -7,6 +7,7 @@ import {
} from '/@/renderer/features/settings/components/settings-section';
import {
DiscordDisplayType,
DiscordLinkType,
useDiscordSettings,
useGeneralSettings,
useSettingsStoreActions,
@ -162,6 +163,54 @@ export const DiscordSettings = () => {
}),
isHidden: !isElectron(),
title: t('setting.discordDisplayType', {
discord: 'Discord',
musicbrainz: 'musicbrainz',
postProcess: 'sentenceCase',
}),
},
{
control: (
<Select
aria-label={t('setting.discordLinkType')}
clearable={false}
data={[
{
label: t('setting.discordLinkType_none', {
postProcess: 'sentenceCase',
}),
value: DiscordLinkType.NONE,
},
{ label: 'last.fm', value: DiscordLinkType.LAST_FM },
{ label: 'musicbrainz', value: DiscordLinkType.MBZ },
{
label: t('setting.discordLinkType_mbz_lastfm', {
lastfm: 'last.fm',
musicbrainz: 'musicbrainz',
}),
value: DiscordLinkType.MBZ_LAST_FM,
},
]}
defaultValue={settings.linkType}
onChange={(e) => {
if (!e) return;
setSettings({
discord: {
...settings,
linkType: e as DiscordLinkType,
},
});
}}
/>
),
description: t('setting.discordLinkType', {
context: 'description',
discord: 'Discord',
lastfm: 'last.fm',
musicbrainz: 'musicbrainz',
postProcess: 'sentenceCase',
}),
isHidden: !isElectron(),
title: t('setting.discordLinkType', {
discord: 'Discord',
postProcess: 'sentenceCase',
}),