import { useCallback, useEffect, useState } from "react"; import { LuVolume2 } from "react-icons/lu"; import { JsonRpcResponse, useJsonRpc } from "@/hooks/useJsonRpc"; import { GridCard } from "@components/Card"; import { SettingsItem } from "@components/SettingsItem"; import { Button } from "@components/Button"; import notifications from "@/notifications"; export default function AudioPopover() { const { send } = useJsonRpc(); const [audioOutputEnabled, setAudioOutputEnabled] = useState(true); const [audioInputEnabled, setAudioInputEnabled] = useState(true); const [usbAudioEnabled, setUsbAudioEnabled] = useState(false); const [loading, setLoading] = useState(false); useEffect(() => { send("getAudioOutputEnabled", {}, (resp: JsonRpcResponse) => { if ("error" in resp) { console.error("Failed to load audio output enabled:", resp.error); } else { setAudioOutputEnabled(resp.result as boolean); } }); send("getAudioInputEnabled", {}, (resp: JsonRpcResponse) => { if ("error" in resp) { console.error("Failed to load audio input enabled:", resp.error); } else { setAudioInputEnabled(resp.result as boolean); } }); send("getUsbDevices", {}, (resp: JsonRpcResponse) => { if ("error" in resp) { console.error("Failed to load USB devices:", resp.error); } else { const usbDevices = resp.result as { audio: boolean }; setUsbAudioEnabled(usbDevices.audio || false); } }); }, [send]); const handleAudioOutputEnabledToggle = useCallback(() => { const enabled = !audioOutputEnabled; setLoading(true); send("setAudioOutputEnabled", { enabled }, (resp: JsonRpcResponse) => { setLoading(false); if ("error" in resp) { notifications.error( `Failed to ${enabled ? "enable" : "disable"} audio output: ${resp.error.data || "Unknown error"}`, ); } else { setAudioOutputEnabled(enabled); notifications.success(`Audio output ${enabled ? "enabled" : "disabled"}`); } }); }, [send, audioOutputEnabled]); const handleAudioInputEnabledToggle = useCallback(() => { const enabled = !audioInputEnabled; setLoading(true); send("setAudioInputEnabled", { enabled }, (resp: JsonRpcResponse) => { setLoading(false); if ("error" in resp) { notifications.error( `Failed to ${enabled ? "enable" : "disable"} audio input: ${resp.error.data || "Unknown error"}`, ); } else { setAudioInputEnabled(enabled); notifications.success(`Audio input ${enabled ? "enabled" : "disabled"}`); } }); }, [send, audioInputEnabled]); return (

Audio

); }