'use client'; import { getVehicleDisplayStatus } from '@/lib/utils'; import { useEffect, useState } from 'react'; import { fetchVehicles, getUpdates, fetchGroups, Vehicle, FirmwareUpdate, VehicleGroup } from '@/lib/api'; import { VehicleList } from '@/components/VehicleList'; import { UpdateManager } from '@/components/UpdateManager'; import { FirmwareList } from '@/components/FirmwareList'; import { GroupManager } from '@/components/GroupManager'; import { Activity, ShieldCheck, Truck } from 'lucide-react'; export default function Home() { const [vehicles, setVehicles] = useState([]); const [updates, setUpdates] = useState([]); const [groups, setGroups] = useState([]); const [loading, setLoading] = useState(true); const loadData = async () => { try { const [v, u, g] = await Promise.all([fetchVehicles(), getUpdates(), fetchGroups()]); setVehicles(v); setUpdates(u); setGroups(g); } catch (err) { console.error(err); } finally { setLoading(false); } }; useEffect(() => { loadData(); const interval = setInterval(loadData, 3000); // Poll every 3s return () => clearInterval(interval); }, []); const onlineCount = vehicles.filter(v => getVehicleDisplayStatus(v) === 'Online').length; const updatingCount = vehicles.filter(v => getVehicleDisplayStatus(v) === 'Updating').length; return (
{/* Header */}

OTA Fleet Commander

Manage firmware updates for your vehicle fleet

System Active
{/* Stats */}

Total Vehicles

{vehicles.length}

Online Status

{onlineCount} / {vehicles.length}

Current Version

{/* Naive logic: most common version or just listing */}

{updates[0]?.version || 'v1.0.0'}

{/* Main Content */}
); }