"use client"; import { useState, useEffect } from "react"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Button } from "@/components/ui/button"; import { Eye } from "lucide-react"; import Link from "next/link"; import { fetchWithAuthClient } from "@/lib/client-utils"; // ✅ Import client-safe API helper import { toast } from "sonner"; // ✅ Define the Order Type interface Order { _id: string; date: string; totalPrice: number; status: string; } export default function OrderTable() { const [orders, setOrders] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { const fetchOrders = async () => { try { const data: Order[] = await fetchWithAuthClient("/orders"); setOrders(data); } catch (error) { toast.error("Failed to fetch orders."); console.error("Error fetching orders:", error); } finally { setLoading(false); } }; fetchOrders(); }, []); return (
Order ID Date Total Status Action {loading ? ( Array.from({ length: 3 }).map((_, index) => ( Loading... Loading... Loading... Loading... Loading... )) ) : orders && orders.length > 0 ? ( orders.map((order) => ( {order._id.slice(-6)} {new Date(order.date).toLocaleDateString()} £{order.totalPrice.toFixed(2)} {order.status} )) ) : ( No orders found. )}
); }