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

interface UsePopularProductsParams extends PaginatedDataHookOptionsBase {}

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

/**
 * @param options - The options for the query
 */
export const usePopularProducts = (
  params?: UsePopularProductsParams
): UsePopularProductsReturns => {
  const {getPopularProducts} = useShopActions()
  const {skip, ...shopActionParams} = params ?? {}

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

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