import {useShopActionInfiniteQuery} from '../../internal/reactQuery'
import {useShopActions} from '../../internal/useShopActions'
import {
  Product,
  PaginatedDataHookOptionsBase,
  PaginatedDataHookReturnsBase,
} from '../../types'

interface UseRecommendedProductsParams extends PaginatedDataHookOptionsBase {}

interface UseRecommendedProductsReturns extends PaginatedDataHookReturnsBase {
  products: Product[] | null
}

/**
 * @param options - The options for the query
 */
export const useRecommendedProducts = (
  params?: UseRecommendedProductsParams
): UseRecommendedProductsReturns => {
  const {getRecommendedProducts} = useShopActions()
  const {skip, ...shopActionParams} = params ?? {}

  const {data, ...rest} = useShopActionInfiniteQuery(
    ['recommendedProducts', shopActionParams],
    getRecommendedProducts,
    shopActionParams,
    {skip}
  )

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