feat(volume): Live-Volume-API + UI-Range setzt Lautstärke während Wiedergabe

This commit is contained in:
vibe-bot 2025-08-08 01:51:36 +02:00
parent 8b0b7c75cd
commit 24de686a54
3 changed files with 45 additions and 2 deletions

View file

@ -1,5 +1,5 @@
import React, { useEffect, useMemo, useState } from 'react';
import { fetchChannels, fetchSounds, playSound } from './api';
import { fetchChannels, fetchSounds, playSound, setVolumeLive } from './api';
import type { VoiceChannelInfo, Sound } from './types';
export default function App() {
@ -88,7 +88,14 @@ export default function App() {
max={1}
step={0.01}
value={volume}
onChange={(e) => setVolume(parseFloat(e.target.value))}
onChange={async (e) => {
const v = parseFloat(e.target.value);
setVolume(v);
if (selected) {
const [guildId] = selected.split(':');
try { await setVolumeLive(guildId, v); } catch {}
}
}}
aria-label="Lautstärke"
/>
</div>

View file

@ -28,6 +28,18 @@ export async function playSound(soundName: string, guildId: string, channelId: s
}
}
export async function setVolumeLive(guildId: string, volume: number): Promise<void> {
const res = await fetch(`${API_BASE}/volume`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ guildId, volume })
});
if (!res.ok) {
const data = await res.json().catch(() => ({}));
throw new Error(data?.error || 'Volume ändern fehlgeschlagen');
}
}