import type { ReactNode } from "react"; import { createCorrelationId, fail, type HousekeepingResult, } from "../../../foundation/contracts"; import { HousekeepingPageShell } from "../../../foundation/page/housekeeping-page-shell"; import { HousekeepingPageState } from "../../../foundation/page/housekeeping-page-state"; import type { HousekeepingPageInput } from "../../../route-handlers"; import { type SystemConfigurationQueryData, type SystemConfigurationQueryInput, type SystemSettingRow, systemConfigurationQuery, } from "../queries/configuration"; interface SystemConfigurationPageProps { readonly result?: HousekeepingResult; } function pageState( kind: "loading" | "empty" | "error", title: string, description: string, ) { return (
); } function forbiddenState() { return (

Access denied

Your account cannot view system configuration.

); } function settingList(title: string, rows: readonly SystemSettingRow[]) { return (

{title}

{rows.map((row) => (
{row.key}
{row.value}
))}
); } function configurationContent(data: SystemConfigurationQueryData) { return data.kind === "settings" ? ( settingList("Website settings", data.settings) ) : (
{settingList("Emulator settings", data.settings)}
{settingList("Emulator texts", data.texts)}

Showing {data.texts.length} of {data.textsTotal} text entries.

); } export function SystemConfigurationPage({ result, }: SystemConfigurationPageProps) { let body: ReactNode; if (!result) { body = pageState( "loading", "Loading configuration", "Reading CMS and emulator settings.", ); } else if (!result.ok) { body = result.error.code === "FORBIDDEN" ? forbiddenState() : pageState( "error", "Configuration unavailable", `Request ${result.correlationId} could not be completed.`, ); } else { const data = result.data; const empty = data.kind === "settings" ? data.settings.length === 0 : data.settings.length === 0 && data.texts.length === 0; if (empty && data.partialDependencies.length === 0) { body = pageState( "empty", "No configuration entries", "The selected configuration source returned no entries.", ); } else { body = (
0 ? "partial" : "ready" } className="space-y-4" > {data.partialDependencies.length > 0 ? ( ) : null} {configurationContent(data)}
); } } return ( {body} ); } export async function renderSystemConfigurationPage( input: HousekeepingPageInput, ) { const queryInput: SystemConfigurationQueryInput | null = input.match.routeId === "system.configuration.settings" ? { routeId: "system.configuration.settings" } : input.match.routeId === "system.configuration.emulator" ? { routeId: "system.configuration.emulator" } : null; const result = queryInput ? await systemConfigurationQuery.run(input.context, queryInput) : fail("NOT_FOUND", "errors.housekeeping.notFound", createCorrelationId()); return ; }