import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
import { Badge } from "@/components/ui/badge";
import { Monitor, Wifi, WifiOff, Loader2 } from "lucide-react";
import { useState } from "react";
import { cn } from "@/lib/utils";
import { FolderStatusPopover } from "../folder-status-popover";
import { useGetClientFolderStatusForDevice } from "@/hooks/queries";
import type { ClientFolderStatus } from "@/types/folder";
export function ComputerCard({
device,
position,
folderStatus,
isCheckingFolder,
}: {
device: any | undefined;
position: number;
folderStatus?: ClientFolderStatus;
isCheckingFolder?: boolean;
}) {
if (!device) {
return (
);
}
const isOffline = device.isOffline;
const firstNetworkInfo = device.networkInfos?.[0];
const agentVersion = device.version;
function DeviceFolderCheck() {
const deviceId = device.id;
const room = device.room;
const [checking, setChecking] = useState(false);
const { data: status, isLoading } = useGetClientFolderStatusForDevice(
deviceId,
room,
checking
);
const handleCheck = () => setChecking((s) => !s);
return (
{checking && isLoading && (
Đang kiểm tra...
)}
{checking && !isLoading && status && (
Các file trong thư mục Setup({status.currentFiles?.length ?? 0})
{(status.currentFiles ?? []).length === 0 ? (
Không có file hiện tại
) : (
(status.currentFiles ?? []).map((f: any) => (
{f.fileName}
{f.lastModified && (
{new Date(f.lastModified).toLocaleString()}
)}
))
)}
)}
{checking && !isLoading && !status && (
Không có dữ liệu
)}
);
}
const DeviceInfo = () => (
Thời gian thiết bị
{new Date(device.deviceTime).toLocaleDateString("vi-VN")}
{new Date(device.deviceTime).toLocaleTimeString("vi-VN")}
Phiên bản
v{device.version}
{device.networkInfos?.length > 0 && (
Thông tin mạng
{device.networkInfos.map((info: any, idx: number) => (
MAC: {info.macAddress ?? "-"}
IP: {info.ipAddress ?? "-"}
))}
)}
Trạng thái
{isOffline ? : }
{isOffline ? "Offline" : "Online"}
);
return (
{position}
{/* Folder Status Icon */}
{device && !isOffline && (
)}
{firstNetworkInfo?.ipAddress && (
{firstNetworkInfo.ipAddress}
{agentVersion && (
v{agentVersion}
)}
)}
{isOffline ? "Off" : "On"}
);
}