fix(SpotifyControls): sync with external shuffle toggles (#2767)

Co-authored-by: v <vendicated@riseup.net>
This commit is contained in:
Joona 2024-08-10 19:35:21 +03:00 committed by GitHub
parent 87e6fa8647
commit 1a712e75a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 12 deletions

View file

@ -55,6 +55,7 @@ interface PlayerState {
// added by patch // added by patch
actual_repeat: Repeat; actual_repeat: Repeat;
shuffle: boolean;
} }
interface Device { interface Device {
@ -182,6 +183,7 @@ export const SpotifyStore = proxyLazyWebpack(() => {
store.isPlaying = e.isPlaying ?? false; store.isPlaying = e.isPlaying ?? false;
store.volume = e.volumePercent ?? 0; store.volume = e.volumePercent ?? 0;
store.repeat = e.actual_repeat || "off"; store.repeat = e.actual_repeat || "off";
store.shuffle = e.shuffle ?? false;
store.position = e.position ?? 0; store.position = e.position ?? 0;
store.isSettingPosition = false; store.isSettingPosition = false;
store.emitChange(); store.emitChange();

View file

@ -70,21 +70,20 @@ export default definePlugin({
replace: "false", replace: "false",
}] }]
}, },
// Discord doesn't give you the repeat kind, only a boolean
{ {
find: 'repeat:"off"!==', find: 'repeat:"off"!==',
replacement: { replacement: [
match: /repeat:"off"!==(.{1,3}),/, {
replace: "actual_repeat:$1,$&" // Discord doesn't give you shuffle state and the repeat kind, only a boolean
} match: /repeat:"off"!==(\i),/,
replace: "shuffle:arguments[2]?.shuffle_state??false,actual_repeat:$1,$&"
}, },
{ {
find: "artists.filter",
replacement: {
match: /(?<=artists.filter\(\i=>).{0,10}\i\.id\)&&/, match: /(?<=artists.filter\(\i=>).{0,10}\i\.id\)&&/,
replace: "" replace: ""
} }
} ]
},
], ],
start: () => toggleHoverControls(Settings.plugins.SpotifyControls.hoverControls), start: () => toggleHoverControls(Settings.plugins.SpotifyControls.hoverControls),