import { useLoaderData, useRevalidator } from "react-router-dom"; import DashboardNavbar from "@components/Header"; import { LinkButton } from "@components/Button"; import KvmCard from "@components/KvmCard"; import useInterval from "@/hooks/useInterval"; import { checkAuth } from "@/main"; import { User } from "@/hooks/stores"; import EmptyCard from "@components/EmptyCard"; import { LuMonitorSmartphone } from "react-icons/lu"; import { ArrowRightIcon } from "@heroicons/react/16/solid"; import { CLOUD_API } from "@/ui.config"; interface LoaderData { devices: { id: string; name: string; online: boolean; lastSeen: string }[]; user: User; } export const loader = 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: [] }; } }; export default function DevicesRoute() { const { devices, user } = useLoaderData() as LoaderData; const revalidate = useRevalidator(); useInterval(revalidate.revalidate, 4000); return (
Manage your cloud KVMs and connect to them securely.