25 lines
677 B
TypeScript
25 lines
677 B
TypeScript
'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),
|
|
)
|
|
}
|