import { useState } from "react"; import type { ServerListenSettings, ServerSettings, SystemInfoResponse, } from "@qltysh/fabro-api-client"; import { formatDurationSecs } from "../lib/format"; import { useServerSettings, useSystemInfo } from "../lib/queries"; import { CollapsibleFile } from "../components/collapsible-file"; import { Badge, Muted, NumberValue, Panel, PanelSkeleton, Row, SettingsPageIntro, type SettingsView, Toggle, UrlValue, } from "../components/settings-panel"; export function meta() { return [{ title: "Server settings — Fabro" }]; } const DESCRIPTION = ( <> Server URLs, listen address, and scheduler limits. Edit via{" "} settings.toml; changes take effect on the next server restart. ); export default function SettingsGeneral() { const settingsQuery = useServerSettings(); const settings = settingsQuery.data; const [view, setView] = useState("settings"); if (!settings) { return (
); } return (
{view === "settings" ? ( <> ) : ( )}
); } function ServerPanel({ settings }: { settings: ServerSettings }) { const { listen, web, api, scheduler } = settings.server; return ( {web.enabled ? : } {api.url ? : Same origin} ); } function SystemPanel() { const infoQuery = useSystemInfo(); const info = infoQuery.data; if (!info) { return ; } return ( {info.version ? info.version : Unknown} {info.uptime_secs != null ? ( formatDurationSecs(info.uptime_secs) ) : ( Unknown )} ); } function OperatingSystemValue({ info }: { info: SystemInfoResponse }) { return ( {info.os ?? "unknown"} {info.arch ?? "unknown"} ); } function ListenValue({ listen }: { listen: ServerListenSettings }) { if (listen.type === "tcp") { return ( tcp {listen.address} ); } return ( unix {listen.path} ); }