export const useGetCount = (results: Array<ResultsConfig>, q: string, filter: Record<string, any>) => {
const searchparams = buildSearchParams(filter).toString();
return useQueries({
queries: results.map<UseQueryOptions<ResultsResponse, FetchError>>(({ endpoint }) => ({
queryKey: ['count', endpoint, { query: q, filter }],
queryFn: () => ...,
placeholderData: keepPreviousData,
})),
combine: (query) => ({
data: results.map((result, index) => {
if (query[index].isError) {
if (shouldUpsell(query[index].error?.code as number)) {
return {
...result,
count: query[index].error?.details?.count as number,
isUpsell: true,
};
}
return null;
}
return {
...result,
count: query[index].data?.count as number,
};
}).filter(isNotNull),
state: {
isPending: query.some((q) => q.isPending),
isLoading: query.some((q) => q.isLoading),
isError: query.some((q) => q.isError),
isSuccess: query.every((q) => q.isSuccess),
isFetching: query.some((q) => q.isFetching),
},
}),
});
};
export const useGetCount = (results: Array<ResultsConfig>, q: string, filter: Record<string, any>) => {
const searchparams = buildSearchParams(filter).toString();
return useQueries({
queries: results.map<UseQueryOptions<ResultsResponse, FetchError>>(({ endpoint }) => ({
queryKey: ['count', endpoint, { query: q, filter }],
queryFn: () => ...,
placeholderData: keepPreviousData,
})),
combine: (query) => ({
data: results.map((result, index) => {
if (query[index].isError) {
if (shouldUpsell(query[index].error?.code as number)) {
return {
...result,
count: query[index].error?.details?.count as number,
isUpsell: true,
};
}
return null;
}
return {
...result,
count: query[index].data?.count as number,
};
}).filter(isNotNull),
state: {
isPending: query.some((q) => q.isPending),
isLoading: query.some((q) => q.isLoading),
isError: query.some((q) => q.isError),
isSuccess: query.every((q) => q.isSuccess),
isFetching: query.some((q) => q.isFetching),
},
}),
});
};