Skip to content

Commit 070f44b

Browse files
committed
feat(admin): display live metrics and derived daemon status
1 parent 5909017 commit 070f44b

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

  • apps/admin/src/app/servers/[serverId]

apps/admin/src/app/servers/[serverId]/page.tsx

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Link from 'next/link'
55
import { useRouter } from 'next/navigation'
66
import { useMutation, useQueryClient } from '@tanstack/react-query'
77
import { useServer } from '@/hooks/use-server'
8+
import { useServerMetrics } from '@/hooks/use-server-metrics'
89
import StatusBadge from '@/components/StatusBadge'
910
import ServerMetrics from '@/components/ServerMetrics'
1011
import CommandRunner from '@/components/CommandRunner'
@@ -18,6 +19,17 @@ export default function ServerDetailPage({
1819
const router = useRouter()
1920
const queryClient = useQueryClient()
2021
const { data: server, isLoading } = useServer(serverId)
22+
const isProvisioned = server?.provision_status === 'completed'
23+
const { data: metricsData } = useServerMetrics(serverId, isProvisioned)
24+
25+
const derivedStatus = (() => {
26+
if (!server) return 'pending' as const
27+
if (server.provision_status !== 'completed') return server.provision_status
28+
if (!server.node_id) return 'awaiting-daemon' as const
29+
if (!metricsData) return 'online' as const // assume online until we know otherwise
30+
if (metricsData.daemon_status === 'active') return 'online' as const
31+
return 'offline' as const
32+
})()
2133

2234
const deleteMutation = useMutation({
2335
mutationFn: async () => {
@@ -92,11 +104,7 @@ export default function ServerDetailPage({
92104
</div>
93105
</div>
94106
<div style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}>
95-
<StatusBadge status={
96-
server.provision_status === 'completed' && !server.node_id
97-
? 'awaiting-daemon'
98-
: server.provision_status
99-
} />
107+
<StatusBadge status={derivedStatus} />
100108

101109
{server.provision_status === 'pending' && (
102110
<button
@@ -160,9 +168,9 @@ export default function ServerDetailPage({
160168
</div>
161169
)}
162170

163-
{/* Metrics (placeholder — will show real data when node heartbeat sends metrics) */}
171+
{/* Live Metrics */}
164172
<div style={{ marginBottom: '1rem' }}>
165-
<ServerMetrics metrics={null} />
173+
<ServerMetrics metrics={metricsData?.metrics ?? null} />
166174
</div>
167175

168176
{/* Command Runner */}

0 commit comments

Comments
 (0)