import { CustomerAsset, PagedResponse } from '@bit-ui-libs/common'; import { useInfiniteQuery } from '@tanstack/react-query'; import { useInferChainType } from '../../../hooks'; import { useServicesStore } from '../../../stores'; interface UseGetFavoriteTokensOpts { ownerId: string; appName: string; orgId?: string; } export function useGetFavoriteTokens(opts: UseGetFavoriteTokensOpts) { const { ownerId, appName, orgId } = opts; const chainType = useInferChainType(); const service = useServicesStore((s) => s.asset[chainType]); const { data: infiniteData, isLoading, isError, refetch, fetchNextPage, hasNextPage, isFetchingNextPage, } = useInfiniteQuery({ queryKey: [`favorites-tokens-${chainType?.toLowerCase()}`, chainType, ownerId, appName, orgId], queryFn: async ({ pageParam }) => service.favorites({ $page: pageParam, ownerId, appName, orgId }), getNextPageParam: (lastPage) => (lastPage?.page < lastPage?.totalPages ? lastPage?.page + 1 : undefined), initialPageParam: 1, enabled: ownerId !== undefined, }); const items = infiniteData?.pages?.map((page: PagedResponse) => page.items).flat(); return { items, isLoading, isError, refetch, fetchNextPage, hasNextPage, isFetchingNextPage, }; }