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 (
Total Machines
{machineList.length}

{onlineMachines.length} online

Recent Sessions
{sessionList.length}

Last 5 sessions

Quick Connect
Your Machines Registered remote machines
{machineList.length > 0 ? (
{machineList.slice(0, 5).map((machine) => (

{machine.name}

{machine.os} {machine.osVersion}

{machine.lastSeen ? formatDistanceToNow(new Date(machine.lastSeen), { addSuffix: true }) : 'Never connected'}
))}
) : (

No machines registered yet

)}
Recent Sessions Your connection history
{sessionList.length > 0 ? (
{sessionList.map((s) => (
{s.endedAt ? ( ) : ( )}

{s.machineName || 'Unknown Machine'}

{s.connectionType === 'session_code' ? 'Session Code' : 'Direct'} connection

{formatDistanceToNow(new Date(s.startedAt), { addSuffix: true })}
))}
) : (

No sessions yet

)}
) }