import { BackIcon } from "@/components/Icon";
import { ServerDetailLoading } from "@/components/loading/ServerDetailLoading";
import ServerFlag from "@/components/ServerFlag";
import { Badge } from "@/components/ui/badge";
import { Card, CardContent } from "@/components/ui/card";
import { useWebSocketContext } from "@/hooks/use-websocket-context";
import { cn, formatNezhaInfo } from "@/lib/utils";
import { NezhaWebsocketResponse } from "@/types/nezha-api";
import { useNavigate } from "react-router-dom";
import { useTranslation } from "react-i18next";
import { formatBytes } from "@/lib/format";
export default function ServerDetailOverview({
server_id,
}: {
server_id: string;
}) {
const { t } = useTranslation();
const navigate = useNavigate();
const { lastMessage, readyState } = useWebSocketContext();
if (readyState !== 1) {
return ;
}
const nezhaWsData = lastMessage
? (JSON.parse(lastMessage.data) as NezhaWebsocketResponse)
: null;
if (!nezhaWsData) {
return ;
}
const server = nezhaWsData.servers.find((s) => s.id === Number(server_id));
if (!server) {
return ;
}
const { name, online, uptime, version } = formatNezhaInfo(
nezhaWsData.now,
server,
);
return (
navigate("/")}
className="flex flex-none cursor-pointer font-semibold leading-none items-center break-all tracking-tight gap-0.5 text-xl"
>
{name}
{t("serverDetail.status")}
{online ? t("serverDetail.online") : t("serverDetail.offline")}
{t("serverDetail.uptime")}
{" "}
{online ? (uptime / 86400).toFixed(0) : "N/A"} {"Days"}{" "}
{t("serverDetail.version")}
{version || t("serverDetail.unknown")}{" "}
{t("serverDetail.arch")}
{server.host.arch || t("serverDetail.unknown")}{" "}
{t("serverDetail.mem")}
{formatBytes(server.host.mem_total)}
{t("serverDetail.disk")}
{formatBytes(server.host.disk_total)}
{t("serverDetail.region")}
{server.country_code?.toUpperCase() ||
t("serverDetail.unknown")}
{server.country_code && (
)}
{t("serverDetail.system")}
{server.host.platform ? (
{" "}
{server.host.platform || t("serverDetail.unknown")} -{" "}
{server.host.platform_version}{" "}
) : (
{t("serverDetail.unknown")}
)}
{"CPU"}
{server.host.cpu ? (
{server.host.cpu}
) : (
{t("serverDetail.unknown")}
)}
{"Load"}
{server.state.load_1 ? (
{server.state.load_1} / {server.state.load_5} /{" "}
{server.state.load_15}
) : (
{t("serverDetail.unknown")}
)}
{t("serverDetail.upload")}
{server.state.net_out_transfer ? (
{" "}
{formatBytes(server.state.net_out_transfer)}{" "}
) : (
{t("serverDetail.unknown")}
)}
{t("serverDetail.download")}
{server.state.net_in_transfer ? (
{" "}
{formatBytes(server.state.net_in_transfer)}{" "}
) : (
{t("serverDetail.unknown")}
)}
);
}