|
'use client' |
|
import * as React from 'react' |
|
import { notifyManager } from '@tanstack/query-core' |
|
|
|
import { useQueryClient } from './QueryClientProvider' |
|
import type { QueryClient, QueryFilters } from '@tanstack/query-core' |
|
|
|
export function useIsFetching( |
|
filters?: QueryFilters, |
|
queryClient?: QueryClient, |
|
): number { |
|
const client = useQueryClient(queryClient) |
|
const queryCache = client.getQueryCache() |
|
|
|
return React.useSyncExternalStore( |
|
React.useCallback( |
|
(onStoreChange) => |
|
queryCache.subscribe(notifyManager.batchCalls(onStoreChange)), |
|
[queryCache], |
|
), |
|
() => client.isFetching(filters), |
|
() => client.isFetching(filters), |
|
) |
|
} |
|
|