import {useShopActionQuery} from '../../internal/reactQuery'
import {useShopActions} from '../../internal/useShopActions'
import {DataHookOptionsBase, DataHookReturnsBase, Product} from '../../types'

export interface UseProductParams extends DataHookOptionsBase {
  /**
   * The product ID to fetch.
   */
  id: string
}

interface UseProductReturns extends DataHookReturnsBase {
  /**
   * The product returned from the query.
   */
  product: Product | null
}

export const useProduct = (params: UseProductParams): UseProductReturns => {
  const {getProduct} = useShopActions()
  const {id, skip = false, ...restParams} = params

  const {data, ...rest} = useShopActionQuery(
    ['product', id, restParams],
    getProduct,
    {id, ...restParams},
    {skip}
  )

  return {
    ...rest,
    product: data,
  }
}
