import { useEffect, useMemo, useState } from 'react' import { Breadcrumbs, Pagination } from '@meshkee/dashboard-ui' import { OrderItemsModal } from '../components/OrderItemsModal' import { OrderRow } from '../components/OrderRow' import { ApiError, isAbortError } from '../lib/api' import { listOrders, type Order, type OrdersListResponse, } from '../services/orderService' import { DEFAULT_ORDER_PROCESS_STEPS } from '../utils/orderSteps' import pageStyles from '../components/PageContent.module.css' import styles from './OrdersPage.module.css' const PAGE_SIZE = 20 const COLUMN_COUNT = 7 export function OrdersPage() { const [data, setData] = useState(null) const [loading, setLoading] = useState(false) const [error, setError] = useState('') const [page, setPage] = useState(1) const [viewOrder, setViewOrder] = useState(null) useEffect(() => { const controller = new AbortController() async function load() { setLoading(true) setError('') try { const response = await listOrders({ page, pageSize: PAGE_SIZE }, controller.signal) if (controller.signal.aborted) return setData(response) } catch (err) { if (isAbortError(err) || controller.signal.aborted) return setError(err instanceof ApiError ? err.message : 'Unable to load orders.') } finally { if (!controller.signal.aborted) setLoading(false) } } void load() return () => controller.abort() }, [page]) const totalPages = useMemo(() => { const total = data?.total ?? 0 return Math.max(1, Math.ceil(total / PAGE_SIZE)) }, [data?.total]) const showingFrom = useMemo(() => { if (!data || data.total === 0) return 0 return (page - 1) * PAGE_SIZE + 1 }, [data, page]) const showingTo = useMemo(() => { if (!data) return 0 return Math.min(data.total, page * PAGE_SIZE) }, [data, page]) return (

My Orders

View your order history and details.

Order list
{data ? ( data.total > 0 ? ( <> Showing {showingFrom} - {showingTo} of {data.total} ) : ( 'No orders' ) ) : ( ' ' )}
{error &&
{error}
} {loading && ( )} {!loading && data?.items.length === 0 && ( )} {!loading && data?.items.map((order) => ( ))}
Order ID Items Total cost Date & time Step Registered by Actions
Loading orders...
You have no orders yet.
{data && data.total > PAGE_SIZE && (
Page {page} / {totalPages} · {PAGE_SIZE} per page · {data.total} total
)}
setViewOrder(null)} />
) }