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

export interface UseProductsParams extends DataHookOptionsBase {
  /**
   * The product IDs to fetch.
   */
  ids: string[]
}

interface UseProductsReturns extends DataHookReturnsBase {
  /**
   * The products returned from the query.
   */
  products: Product[] | null
}

export const useProducts = (params: UseProductsParams): UseProductsReturns => {
  const {getProducts} = useShopActions()
  const {skip = false, ...restParams} = params

  const {data, ...rest} = useShopActionQuery(
    ['products', restParams],
    getProducts,
    restParams,
    {skip}
  )

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