'use client' import { useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import Image from 'next/image' import Nav from '../components/Nav' interface Order { id: number drop_id: number buyer_id: number size: number payment_id: string created_at: string drop_item: string drop_unit: string drop_ppu: number drop_image_url: string | null buyer_fullname: string buyer_address: string buyer_phone: string } export default function OrdersPage() { const router = useRouter() const [orders, setOrders] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [user, setUser] = useState(null) useEffect(() => { checkAuth() fetchOrders() }, []) const checkAuth = async () => { try { const response = await fetch('/api/auth/session', { credentials: 'include', }) if (response.ok) { const data = await response.json() setUser(data.user) } else { // Not authenticated, redirect to home router.push('/') } } catch (error) { console.error('Error checking auth:', error) router.push('/') } } const fetchOrders = async () => { try { const response = await fetch('/api/orders', { credentials: 'include', }) if (response.status === 401) { router.push('/') return } if (!response.ok) { const errorData = await response.json() throw new Error(errorData.error || 'Failed to fetch orders') } const data = await response.json() setOrders(data) } catch (error) { console.error('Error fetching orders:', error) setError(error instanceof Error ? error.message : 'Failed to load orders') } finally { setLoading(false) } } const formatDate = (dateString: string) => { const date = new Date(dateString) return date.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', }) } const formatSize = (size: number, unit: string) => { if (unit === 'kg' && size >= 1000) { return `${(size / 1000).toFixed(1)}kg` } return `${size}${unit}` } const calculatePrice = (order: Order) => { // ppu is stored as integer where 1000 = $1.00 const pricePerGram = order.drop_ppu / 1000 // Size is in grams return (order.size * pricePerGram).toFixed(2) } if (loading) { return ( <>