import { useCallback, useState, useEffect } from "react"; import { GridCard } from "@components/Card"; import { SettingsPageHeader } from "../components/SettingsPageheader"; import Checkbox from "../components/Checkbox"; import { useJsonRpc } from "../hooks/useJsonRpc"; import notifications from "../notifications"; import { TextAreaWithLabel } from "../components/TextArea"; import { isOnDevice } from "../main"; import { Button } from "../components/Button"; import { useSettingsStore } from "../hooks/stores"; import { SettingsItem } from "./devices.$id.settings"; export default function SettingsAdvancedRoute() { const [send] = useJsonRpc(); const [sshKey, setSSHKey] = useState(""); const setDeveloperMode = useSettingsStore(state => state.setDeveloperMode); const [devChannel, setDevChannel] = useState(false); const [usbEmulationEnabled, setUsbEmulationEnabled] = useState(false); const settings = useSettingsStore(); useEffect(() => { send("getDevModeState", {}, resp => { if ("error" in resp) return; const result = resp.result as { enabled: boolean }; setDeveloperMode(result.enabled); }); send("getSSHKeyState", {}, resp => { if ("error" in resp) return; setSSHKey(resp.result as string); }); send("getUsbEmulationState", {}, resp => { if ("error" in resp) return; setUsbEmulationEnabled(resp.result as boolean); }); send("getDevChannelState", {}, resp => { if ("error" in resp) return; setDevChannel(resp.result as boolean); }); }, [send, setDeveloperMode]); const getUsbEmulationState = useCallback(() => { send("getUsbEmulationState", {}, resp => { if ("error" in resp) return; setUsbEmulationEnabled(resp.result as boolean); }); }, [send]); const handleUsbEmulationToggle = useCallback( (enabled: boolean) => { send("setUsbEmulationState", { enabled: enabled }, resp => { if ("error" in resp) { notifications.error( `Failed to ${enabled ? "enable" : "disable"} USB emulation: ${resp.error.data || "Unknown error"}`, ); return; } setUsbEmulationEnabled(enabled); getUsbEmulationState(); }); }, [getUsbEmulationState, send], ); const handleResetConfig = useCallback(() => { send("resetConfig", {}, resp => { if ("error" in resp) { notifications.error( `Failed to reset configuration: ${resp.error.data || "Unknown error"}`, ); return; } notifications.success("Configuration reset to default successfully"); }); }, [send]); const handleUpdateSSHKey = useCallback(() => { send("setSSHKeyState", { sshKey }, resp => { if ("error" in resp) { notifications.error( `Failed to update SSH key: ${resp.error.data || "Unknown error"}`, ); return; } notifications.success("SSH key updated successfully"); }); }, [send, sshKey]); const handleDevModeChange = useCallback( (developerMode: boolean) => { send("setDevModeState", { enabled: developerMode }, resp => { if ("error" in resp) { notifications.error( `Failed to set dev mode: ${resp.error.data || "Unknown error"}`, ); return; } setDeveloperMode(developerMode); }); }, [send, setDeveloperMode], ); const handleDevChannelChange = (enabled: boolean) => { send("setDevChannelState", { enabled }, resp => { if ("error" in resp) { notifications.error( `Failed to set dev channel state: ${resp.error.data || "Unknown error"}`, ); return; } setDevChannel(enabled); }); }; return (
{ handleDevChannelChange(e.target.checked); }} /> handleDevModeChange(e.target.checked)} /> {settings.developerMode && (

Developer Mode Enabled

  • Security is weakened while active
  • Only use if you understand the risks
For advanced users only. Not for production use.
)} {isOnDevice && settings.developerMode && (
setSSHKey(e.target.value)} placeholder="Enter your SSH public key" />

The default SSH user is root.

)} { settings.setDebugMode(e.target.checked); }} /> {settings.debugMode && ( <>
); }