"use client"; import { useEffect, useRef, useState } from "react"; import { GearIcon } from "@radix-ui/react-icons"; import { Bell, SettingsIcon, Volume2 } from "lucide-react"; import MicVolumeBar from "_components/MicVolumeIndication"; import { useMutation, useQuery } from "@tanstack/react-query"; import { editUserAPI, getUserAPI } from "_querys/user"; import { useSession } from "next-auth/react"; import { useAudioStore } from "_store/audioStore"; import toast from "react-hot-toast"; import Link from "next/link"; export const SettingsBtn = () => { const session = useSession(); const [inputDevices, setInputDevices] = useState([]); const { data: user } = useQuery({ queryKey: ["user", session.data?.user.id], queryFn: () => getUserAPI(session.data!.user.id), }); const testSoundRef = useRef(null); const editUserMutation = useMutation({ mutationFn: editUserAPI, }); useEffect(() => { if (typeof window !== "undefined") { testSoundRef.current = new Audio("/sounds/Melder3.wav"); } }, []); const modalRef = useRef(null); const [showIndication, setShowIndication] = useState(false); const [settings, setSettings] = useState({ micDeviceId: user?.settingsMicDevice || null, micVolume: user?.settingsMicVolume || 1, radioVolume: user?.settingsRadioVolume || 0.8, dmeVolume: user?.settingsDmeVolume || 0.8, pilotNtfyRoom: user?.settingsNtfyRoom || "", }); const { setSettings: setAudioSettings } = useAudioStore((state) => state); useEffect(() => { if (user) { setAudioSettings({ micDeviceId: user.settingsMicDevice, micVolume: user.settingsMicVolume || 1, radioVolume: user.settingsRadioVolume || 0.8, dmeVolume: user.settingsDmeVolume || 0.8, }); setSettings({ micDeviceId: user.settingsMicDevice, micVolume: user.settingsMicVolume || 1, radioVolume: user.settingsRadioVolume || 0.8, dmeVolume: user.settingsDmeVolume || 0.8, pilotNtfyRoom: user.settingsNtfyRoom || "", }); } }, [user, setSettings, setAudioSettings]); const setSettingsPartial = (newSettings: Partial) => { setSettings((prev) => ({ ...prev, ...newSettings, })); }; useEffect(() => { const setDevices = async () => { if (typeof navigator !== "undefined" && navigator.mediaDevices?.enumerateDevices) { const stream = await navigator.mediaDevices.getUserMedia({ video: false, audio: true }); const devices = await navigator.mediaDevices.enumerateDevices(); setInputDevices(devices.filter((d) => d.kind === "audioinput")); stream.getTracks().forEach((track) => track.stop()); } }; setDevices(); }, []); return (

Einstellungen

Eingabelautstärke

{ const value = parseFloat(e.target.value); setSettingsPartial({ micVolume: value }); setShowIndication(true); }} value={settings.micVolume} className="range range-xs range-accent w-full" />
0% 25% 50% 75% 100%
{showIndication && ( )}

Funk Lautstärke

{ const value = parseFloat(e.target.value); setSettingsPartial({ radioVolume: value }); }} value={settings.radioVolume} className="range range-xs range-primary w-full" />
0% 25% 50% 75% 100%

Melder Lautstärke

{ const value = parseFloat(e.target.value); setSettingsPartial({ dmeVolume: value }); if (!testSoundRef.current) return; testSoundRef.current.volume = value; testSoundRef.current.play(); }} value={settings.dmeVolume} className="range range-xs range-primary w-full" />
0% 25% 50% 75% 100%

Hier findest du mehr Informationen!

); }; export const Settings = () => { return (
); };