"use client"; import { ServerDetailLoading } from "@/app/(main)/ClientComponents/ServerDetailLoading"; import { NezhaAPISafe, ServerApi } from "@/app/types/nezha-api"; import { BackIcon } from "@/components/Icon"; import ServerFlag from "@/components/ServerFlag"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent } from "@/components/ui/card"; import getEnv from "@/lib/env-entry"; import { cn, formatBytes, nezhaFetcher } from "@/lib/utils"; import { useTranslations } from "next-intl"; import { notFound, useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import useSWR from "swr"; import useSWRImmutable from "swr/immutable"; export default function ServerDetailClient({ server_id, }: { server_id: number; }) { const t = useTranslations("ServerDetailClient"); const router = useRouter(); const [hasHistory, setHasHistory] = useState(false); useEffect(() => { window.scrollTo(0, 0); }, []); useEffect(() => { const previousPath = sessionStorage.getItem("fromMainPage"); if (previousPath) { setHasHistory(true); } }, []); const linkClick = () => { if (hasHistory) { router.back(); } else { router.push(`/`); } }; const { data: allFallbackData, isLoading } = useSWRImmutable( "/api/server", nezhaFetcher, ); const fallbackData = allFallbackData?.result?.find( (item) => item.id === server_id, ); if (!fallbackData && !isLoading) { notFound(); } const { data, error } = useSWR( `/api/detail?server_id=${server_id}`, nezhaFetcher, { refreshInterval: Number(getEnv("NEXT_PUBLIC_NezhaFetchInterval")) || 5000, fallbackData, revalidateOnMount: false, revalidateIfStale: false, }, ); if (error) { return ( <>

{error.message}

{t("detail_fetch_error_message")}

); } if (!data) return ; return (
{data?.name}

{t("status")}

{data?.online_status ? t("Online") : t("Offline")}

{t("Uptime")}

{" "} {(data?.status.Uptime / 86400).toFixed(0)} {t("Days")}{" "}

{t("Version")}

{data?.host.Version || "Unknown"}

{t("Arch")}

{data?.host.Arch || "Unknown"}

{t("Mem")}

{formatBytes(data?.host.MemTotal)}

{t("Disk")}

{formatBytes(data?.host.DiskTotal)}

{t("Region")}

{data?.host.CountryCode.toUpperCase()}

{t("System")}

{data?.host.Platform ? (
{" "} {data?.host.Platform || "Unknown"} -{" "} {data?.host.PlatformVersion}{" "}
) : (
Unknown
)}

{t("CPU")}

{data?.host.CPU ? (
{data?.host.CPU}
) : (
Unknown
)}

{t("Load")}

{data.status.NetInTransfer ? (
{data.status.Load1} / {data.status.Load5} /{" "} {data.status.Load15}
) : null}

{t("Upload")}

{data.status.NetOutTransfer ? (
{" "} {formatBytes(data.status.NetOutTransfer)}{" "}
) : null}

{t("Download")}

{data.status.NetInTransfer ? (
{" "} {formatBytes(data.status.NetInTransfer)}{" "}
) : null}
); }