Fixes 2 sync and UI bugs in music-together plugin (#4071)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
HasselAssel
2025-12-19 08:13:56 +01:00
committed by GitHub
parent 58a19cdaa2
commit 92a943c755
3 changed files with 66 additions and 4 deletions

View File

@ -215,6 +215,25 @@ export default createPlugin<
this.ignoreChange = true;
switch (event.type) {
case 'CLEAR_QUEUE': {
if (conn && this.permission === 'host-only') {
await this.connection?.broadcast('SYNC_QUEUE', {
videoList: this.queue?.videoList ?? [],
});
return;
}
this.queue?.clear();
await this.connection?.broadcast('CLEAR_QUEUE', {});
break;
}
case 'SET_INDEX': {
this.queue?.setIndex(event.payload.index);
await this.connection?.broadcast('SET_INDEX', {
index: event.payload.index,
});
break;
}
case 'ADD_SONGS': {
if (conn && this.permission === 'host-only') {
await this.connection?.broadcast('SYNC_QUEUE', {
@ -234,7 +253,15 @@ export default createPlugin<
await this.connection?.broadcast('ADD_SONGS', {
...event.payload,
videoList,
});
},
event.after,
);
const afterevent = event.after?.at(0);
if (afterevent?.type === 'SET_INDEX') {
this.queue?.setIndex(afterevent.payload.index);
}
break;
}
case 'REMOVE_SONG': {
@ -385,6 +412,16 @@ export default createPlugin<
const queueListener = async (event: ConnectionEventUnion) => {
this.ignoreChange = true;
switch (event.type) {
case 'CLEAR_QUEUE': {
await this.connection?.broadcast('CLEAR_QUEUE', {});
break;
}
case 'SET_INDEX': {
await this.connection?.broadcast('SET_INDEX', {
index: event.payload.index,
});
break;
}
case 'ADD_SONGS': {
await this.connection?.broadcast('ADD_SONGS', {
...event.payload,
@ -392,7 +429,9 @@ export default createPlugin<
...it,
ownerId: it.ownerId ?? this.connection!.id,
})),
});
},
event.after,
);
break;
}
case 'REMOVE_SONG': {
@ -420,6 +459,14 @@ export default createPlugin<
const listener = async (event: ConnectionEventUnion) => {
this.ignoreChange = true;
switch (event.type) {
case 'CLEAR_QUEUE': {
this.queue?.clear();
break;
}
case 'SET_INDEX': {
this.queue?.setIndex(event.payload.index);
break;
}
case 'ADD_SONGS': {
const videoList: VideoData[] = event.payload.videoList.map(
(it) => ({
@ -429,6 +476,13 @@ export default createPlugin<
);
await this.queue?.addVideos(videoList, event.payload.index);
const afterevent = event.after?.at(0);
if (afterevent?.type === 'SET_INDEX') {
this.queue?.setIndex(afterevent.payload.index);
}
break;
}
case 'REMOVE_SONG': {