IKHSAN
ENID Baca dalam Bahasa Indonesia

homeio

Public

Forked from doctor-io/homeio

Branch
main
Latest commit
958d74616 October 2026

useSystemMetrics.ts

Open raw
"use client";

import { useQuery } from "@tanstack/react-query";
import type { SystemMetricsSnapshot } from "@/lib/shared/contracts/system";
import { queryKeys } from "@/lib/shared/query-keys";

type MetricsResponse = {
  data: SystemMetricsSnapshot;
};

async function fetchSystemMetrics(): Promise<SystemMetricsSnapshot> {
  const response = await fetch("/api/v1/system/metrics", {
    cache: "no-store",
  });

  if (!response.ok) {
    throw new Error(`Failed to fetch system metrics (${response.status})`);
  }

  const json = (await response.json()) as MetricsResponse;
  return json.data;
}

export function useSystemMetrics() {
  return useQuery({
    queryKey: queryKeys.systemMetrics,
    queryFn: fetchSystemMetrics,
    // useSystemSse drives continuous cache updates via queryClient.setQueryData.
    // Set staleTime to Infinity so React Query does not refetch on its own —
    // one initial REST fetch gives us a baseline while SSE warms up.
    staleTime: Infinity,
  });
}
bytes
993
lines
34
Type
ts
Latest commit
16 October 2026