@@ -5,6 +5,7 @@ import Link from 'next/link'
55import { useRouter } from 'next/navigation'
66import { useMutation , useQueryClient } from '@tanstack/react-query'
77import { useServer } from '@/hooks/use-server'
8+ import { useServerMetrics } from '@/hooks/use-server-metrics'
89import StatusBadge from '@/components/StatusBadge'
910import ServerMetrics from '@/components/ServerMetrics'
1011import 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