import { SearchListingsRequest } from '@bit-ui-libs/common'; import { useInfiniteQuery } from '@tanstack/react-query'; import { useServicesStore } from '../../../stores'; interface UseListingOpts { request: SearchListingsRequest; } export function useListing(opts: UseListingOpts) { const service = useServicesStore(s => s.marketplace.listings); const { isLoading, isError, refetch, data, fetchNextPage, hasNextPage, isFetchingNextPage } = useInfiniteQuery({ queryKey: ['listed-assets-collection', opts], queryFn: ({ pageParam }) => service.search({ ranges: [[0, 1], [20, 30]], $page: pageParam, $order: 'desc', $orderBy: 'createdAt', ...opts.request, }), getNextPageParam: lastPage => (lastPage?.page < lastPage?.totalPages ? lastPage?.page + 1 : undefined), initialPageParam: 1, }); const items = data?.pages?.map((page) => page.items).flat(); return { data: items, isLoading, isError, refetch, fetchNextPage, hasNextPage, isFetchingNextPage, }; }