'use client' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { ScrollArea } from '@/components/ui/scroll-area' import { Smartphone, Battery, Signal, Copy } from 'lucide-react' import { useToast } from '@/hooks/use-toast' import httpBrowserClient from '@/lib/httpBrowserClient' import { ApiEndpoints } from '@/config/api' import { useQuery } from '@tanstack/react-query' import { Skeleton } from '@/components/ui/skeleton' export default function DeviceList() { const { toast } = useToast() const { isPending, error, data: devices, } = useQuery({ queryKey: ['devices'], queryFn: () => httpBrowserClient .get(ApiEndpoints.gateway.listDevices()) .then((res) => res.data), // select: (res) => res.data, }) const handleCopyId = (id: string) => { navigator.clipboard.writeText(id) toast({ title: 'Device ID copied to clipboard', }) } return ( Registered Devices
{isPending && ( <> {[1, 2, 3].map((i) => (
))} )} {error && (
Error: {error.message}
)} {!isPending && !error && devices?.data?.length === 0 && (
No devices found
)} {devices?.data?.map((device) => (

{device.brand} {device.model}

{device.enabled ? 'Enabled' : 'Disabled'}
{device._id}
unknown
-
Registered at:{' '} {new Date(device.createdAt).toLocaleString('en-US', { dateStyle: 'medium', timeStyle: 'short', })}
))}
) }