import { Table } from "@mantine/core"; import { useSuspenseAPIQuery } from "../api/api"; import { IconRun, IconWall } from "@tabler/icons-react"; import { formatTimestamp } from "../lib/formatTime"; import { useSettings } from "../state/settingsSlice"; import InfoPageCard from "../components/InfoPageCard"; import InfoPageStack from "../components/InfoPageStack"; export default function StatusPage() { const { data: buildinfo } = useSuspenseAPIQuery>({ path: `/status/buildinfo`, }); const { data: runtimeinfo } = useSuspenseAPIQuery>({ path: `/status/runtimeinfo`, }); const { useLocalTime } = useSettings(); const statusConfig: Record< string, { title?: string; formatValue?: (v: string | boolean) => string; } > = { startTime: { title: "Start time", formatValue: (v: string | boolean) => formatTimestamp(new Date(v as string).valueOf() / 1000, useLocalTime), }, CWD: { title: "Working directory" }, reloadConfigSuccess: { title: "Configuration reload", formatValue: (v: string | boolean) => (v ? "Successful" : "Unsuccessful"), }, lastConfigTime: { title: "Last successful configuration reload", formatValue: (v: string | boolean) => formatTimestamp(new Date(v as string).valueOf() / 1000, useLocalTime), }, corruptionCount: { title: "WAL corruptions" }, goroutineCount: { title: "Goroutines" }, storageRetention: { title: "Storage retention" }, }; return ( {Object.entries(buildinfo.data).map(([k, v]) => ( {k} {v} ))}
{Object.entries(runtimeinfo.data).map(([k, v]) => { const { title = k, formatValue = (val: string) => val } = statusConfig[k] || {}; return ( {title} {formatValue(v)} ); })}
); }