import type { Order, OrderListFilter, Page } from '@platform-modules/commerce-orders'
import { reviveOrderPage } from '@platform-modules/commerce-orders-react'
import { useMarketplaceContext } from './MarketplaceProvider.js'
import { useAsyncResource } from './useAsyncResource.js'

export function useVendorOrders(
  filter?: OrderListFilter,
  seed?: { initialData?: Page<Order> },
): {
  page: Page<Order> | null
  loading: boolean
  error: Error | null
  reload: () => void
} {
  const { client } = useMarketplaceContext('useVendorOrders')
  const key = `list:${JSON.stringify(filter ?? {})}`
  const fetcher = async () => reviveOrderPage(await client.getVendorOrders(filter))
  const { data, loading, error, reload } = useAsyncResource<Page<Order>>(fetcher, key, seed)
  return { page: data, loading, error, reload }
}
