import { LuPower } from "react-icons/lu"; import { useCallback, useEffect, useState } from "react"; import { Button } from "@components/Button"; import Card from "@components/Card"; import { SettingsPageHeader } from "@components/SettingsPageheader"; import { useJsonRpc } from "@/hooks/useJsonRpc"; import notifications from "@/notifications"; import FieldLabel from "@components/FieldLabel"; import LoadingSpinner from "@components/LoadingSpinner"; interface DCPowerState { isOn: boolean; voltage: number; current: number; power: number; } export function DCPowerControl() { const [send] = useJsonRpc(); const [powerState, setPowerState] = useState(null); const getDCPowerState = useCallback(() => { send("getDCPowerState", {}, resp => { if ("error" in resp) { notifications.error( `Failed to get DC power state: ${resp.error.data || "Unknown error"}`, ); return; } setPowerState(resp.result as DCPowerState); }); }, [send]); const handlePowerToggle = (enabled: boolean) => { send("setDCPowerState", { enabled }, resp => { if ("error" in resp) { notifications.error( `Failed to set DC power state: ${resp.error.data || "Unknown error"}`, ); return; } getDCPowerState(); // Refresh state after change }); }; useEffect(() => { getDCPowerState(); // Set up polling interval to update status const interval = setInterval(getDCPowerState, 1000); return () => clearInterval(interval); }, [getDCPowerState]); return (
{powerState === null ? ( ) : (
{/* Power Controls */}

{/* Status Display */}

{powerState.voltage.toFixed(1)}V

{powerState.current.toFixed(1)}A

{powerState.power.toFixed(1)}W

)}
); }