import {useMemo} from 'react' import {useShopActionInfiniteQuery} from '../../internal/reactQuery' import {useShopActions} from '../../internal/useShopActions' import { Shop, PaginatedDataHookOptionsBase, PaginatedDataHookReturnsBase, } from '../../types' export interface UseRecommendedShopsParams extends PaginatedDataHookOptionsBase {} export interface UseRecommendedShopsReturns extends PaginatedDataHookReturnsBase { shops: Shop[] | null } export const useRecommendedShops = ( params?: UseRecommendedShopsParams ): UseRecommendedShopsReturns => { const {getRecommendedShops} = useShopActions() const {skip, ...shopActionParamsToPass} = params || {} const {data, ...rest} = useShopActionInfiniteQuery( ['recommendedShops', shopActionParamsToPass], getRecommendedShops, shopActionParamsToPass, {skip} ) const shops = useMemo(() => { if (!data) return null return Array.from(new Map(data.map(shop => [shop.id, shop])).values()) }, [data]) return { ...rest, shops, } } /** * The `useRecommendedShops` hook fetches personalized shop recommendations based on the user's purchase patterns, followed shops, and product interests in the Shop app. You can use this for shop discovery sections, "Brands you might like" features, or diversifying merchant exposure. Unlike `useRecentShops` which shows interaction history, this hook provides algorithmic suggestions for new merchant discovery. * @publicDocs */ export type UseRecommendedShopsGeneratedType = ( params?: UseRecommendedShopsParams ) => UseRecommendedShopsReturns