import { type LoaderFunctionArgs } from '@remix-run/node' import { Link, useLoaderData } from '@remix-run/react' import Attribute from '~/components/Attribute' import Card from '~/components/Card' import StatusCircle from '~/components/StatusCircle' import { type Machine } from '~/types' import { pull } from '~/utils/headscale' import { getSession } from '~/utils/sessions' import { useLiveData } from '~/utils/useLiveData' export async function loader({ request, params }: LoaderFunctionArgs) { const session = await getSession(request.headers.get('Cookie')) if (!params.id) { throw new Error('No machine ID provided') } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const data = await pull<{ node: Machine }>(`v1/node/${params.id}`, session.get('hsApiKey')!) return data.node } export default function Page() { const data = useLoaderData() useLiveData({ interval: 1000 }) return (

All Machines {' / '} {data.givenName}

{data.givenName}

) }