import { createFileRoute, useParams } from "@tanstack/react-router"; import { useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { LayoutGrid, TableIcon, Monitor, FolderCheck, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { useGetDeviceFromRoom } from "@/hooks/queries"; import { useDeviceEvents } from "@/hooks/useDeviceEvents"; import { useClientFolderStatus } from "@/hooks/useClientFolderStatus"; import { DeviceGrid } from "@/components/grids/device-grid"; import { DeviceTable } from "@/components/tables/device-table"; import { useMachineNumber } from "@/hooks/useMachineNumber"; import { toast } from "sonner"; export const Route = createFileRoute("/_auth/room/$roomName/")({ head: ({ params }) => ({ meta: [{ title: `Danh sách thiết bị phòng ${params.roomName}` }], }), component: RoomDetailPage, }); function RoomDetailPage() { const { roomName } = useParams({ from: "/_auth/room/$roomName/" }); const [viewMode, setViewMode] = useState<"grid" | "table">("grid"); const [isCheckingFolder, setIsCheckingFolder] = useState(false); // SSE real-time updates useDeviceEvents(roomName); // Folder status from SSE const folderStatuses = useClientFolderStatus(roomName); const { data: devices = [] } = useGetDeviceFromRoom(roomName); const parseMachineNumber = useMachineNumber(); const handleCheckFolderStatus = async () => { try { setIsCheckingFolder(true); // Trigger folder status check via the service const response = await fetch( `/api/device-comm/request-get-client-folder-status?roomName=${encodeURIComponent(roomName)}`, { method: "POST", } ); if (!response.ok) { throw new Error("Failed to request folder status"); } toast.success("Đang kiểm tra thư mục Setup..."); } catch (error) { console.error("Check folder error:", error); toast.error("Lỗi khi kiểm tra thư mục!"); } finally { setIsCheckingFolder(false); } }; const sortedDevices = [...devices].sort((a, b) => { return parseMachineNumber(a.id) - parseMachineNumber(b.id); }); return (
Danh sách thiết bị phòng {roomName}
{devices.length === 0 ? (

Không có thiết bị

Phòng này chưa có thiết bị nào được kết nối.

) : viewMode === "grid" ? ( ) : ( )}
); }