import { Card, Descriptions, Spin } from 'antd' import { SettingOutlined } from '@ant-design/icons' import { useQuery } from '@tanstack/react-query' import { useTranslation } from 'react-i18next' import apiClient, { isEnvelope } from '../../api/client' import PageHeader from '../../components/PageHeader' interface SetupStatus { completed: boolean admin_email: string fqdn: string } interface SystemHealth { status: string version: string } export default function SettingsPage() { const { t } = useTranslation() const { data: setupStatus, isLoading: loadingSetup } = useQuery({ queryKey: ['setup', 'status'], queryFn: async () => { const r = await apiClient.get('/setup/status') if (isEnvelope(r.data)) return r.data.data as SetupStatus return null }, }) const { data: health, isLoading: loadingHealth } = useQuery({ queryKey: ['system', 'health'], queryFn: async () => { const r = await apiClient.get('/system/health') if (isEnvelope(r.data)) return r.data.data as SystemHealth return null }, }) if (loadingSetup || loadingHealth) { return } return (
} title={t('settings.title')} subtitle={t('settings.intro')} /> {health?.version ?? '—'} {health?.status ?? '—'} {setupStatus?.admin_email ?? '—'} {setupStatus?.fqdn ?? '—'} {setupStatus?.completed ? t('common.yes') : t('common.no')}
) }