import { useLoaderData, useRevalidator, type LoaderFunction } from "react-router"; import { LuMonitorSmartphone } from "react-icons/lu"; import { ArrowRightIcon } from "@heroicons/react/16/solid"; import { useInterval } from "usehooks-ts"; import { User } from "@hooks/stores"; import DashboardNavbar from "@components/Header"; import EmptyCard from "@components/EmptyCard"; import KvmCard from "@components/KvmCard"; import { LinkButton } from "@components/Button"; import { checkAuth } from "@/main"; import { CLOUD_API } from "@/ui.config"; import { m } from "@localizations/messages"; interface LoaderData { devices: { id: string; name: string; online: boolean; lastSeen: string }[]; user: User; } const loader: LoaderFunction = async () => { const user = await checkAuth(); try { const res = await fetch(`${CLOUD_API}/devices`, { method: "GET", credentials: "include", mode: "cors", }); const { devices } = await res.json(); return { devices, user }; } catch (e) { console.error(e); return { devices: [], user }; } }; export default function DevicesRoute() { const { devices, user } = useLoaderData() as LoaderData; const revalidate = useRevalidator(); useInterval(revalidate.revalidate, 4000); return (
{m.cloud_kvms_description()}