import type { Order } from '@platform-modules/commerce-orders'
import { useOrdersContext } from './OrdersProvider.js'
import { useAsyncResource } from './useAsyncResource.js'

export function useOrder(
  id: string,
  seed?: { initialData?: Order | null },
): { order: Order | null; loading: boolean; error: Error | null; reload: () => void } {
  const { client } = useOrdersContext('useOrder')
  const key = `id:${id}`
  const fetcher = () => client.getOrderById(id)
  const { data, loading, error, reload } = useAsyncResource<Order | null>(fetcher, key, seed)
  return { order: data, loading, error, reload }
}
