import { auth } from '@/auth' import { db } from '@/lib/db' import { machines, sessions } from '@/lib/db/schema' import { eq, desc } from 'drizzle-orm' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import Link from 'next/link' import { Laptop, History, Link2, ArrowRight, Clock, CheckCircle2, Circle } from 'lucide-react' import { formatDistanceToNow } from 'date-fns' export default async function DashboardPage() { const session = await auth() const userId = session!.user.id const [machineList, sessionList] = await Promise.all([ db.select().from(machines).where(eq(machines.userId, userId)).orderBy(desc(machines.lastSeen)), db.select().from(sessions).where(eq(sessions.viewerUserId, userId)).orderBy(desc(sessions.startedAt)).limit(5), ]) const onlineMachines = machineList.filter((m) => m.isOnline) return (
{onlineMachines.length} online
Last 5 sessions
{machine.name}
{machine.os} {machine.osVersion}
No machines registered yet
{s.machineName || 'Unknown Machine'}
{s.connectionType === 'session_code' ? 'Session Code' : 'Direct'} connection
No sessions yet