feat(volume): Live-Sync der Lautstärke über SSE (Broadcast bei Änderung + Snapshot); Frontend reagiert auf Updates

This commit is contained in:
vibe-bot 2025-08-10 21:15:39 +02:00
parent ef67c712fe
commit 032c269798
2 changed files with 24 additions and 1 deletions

View file

@ -941,6 +941,8 @@ app.post('/api/volume', (req: Request, res: Response) => {
// Kein aktiver Player: nur persistieren für nächste Wiedergabe
persistedState.volumes[guildId] = safeVolume;
writePersistedState(persistedState);
// Broadcast neue Lautstärke an alle Clients
sseBroadcast({ type: 'volume', guildId, volume: safeVolume });
return res.json({ ok: true, volume: safeVolume, persistedOnly: true });
}
state.currentVolume = safeVolume;
@ -950,6 +952,8 @@ app.post('/api/volume', (req: Request, res: Response) => {
}
persistedState.volumes[guildId] = safeVolume;
writePersistedState(persistedState);
// Broadcast neue Lautstärke an alle Clients
sseBroadcast({ type: 'volume', guildId, volume: safeVolume });
return res.json({ ok: true, volume: safeVolume });
} catch (e: any) {
console.error('Volume-Fehler:', e);
@ -1075,7 +1079,7 @@ app.get('/api/events', (req: Request, res: Response) => {
// Snapshot senden
try {
res.write(`data: ${JSON.stringify({ type: 'snapshot', party: Array.from(partyActive), selected: persistedState.selectedChannels ?? {} })}\n\n`);
res.write(`data: ${JSON.stringify({ type: 'snapshot', party: Array.from(partyActive), selected: persistedState.selectedChannels ?? {}, volumes: persistedState.volumes ?? {} })}\n\n`);
} catch {}
// Ping, damit Proxies die Verbindung offen halten