forked from TanStack/query
/
useIsMutating.ts
44 lines (37 loc) 路 1.17 KB
/
useIsMutating.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import {
MutationKey,
MutationFilters,
parseMutationFilterArgs,
} from '@tanstack/query-core'
import { ContextOptions } from './types'
import { useQueryClient } from './QueryClientProvider'
import { Accessor, createSignal, onCleanup } from 'solid-js'
interface Options extends ContextOptions {}
export function useIsMutating(
filters?: MutationFilters,
options?: Options,
): Accessor<number>
export function useIsMutating(
mutationKey?: MutationKey,
filters?: Omit<MutationFilters, 'mutationKey'>,
options?: Options,
): Accessor<number>
export function useIsMutating(
arg1?: MutationKey | MutationFilters,
arg2?: Omit<MutationFilters, 'mutationKey'> | Options,
arg3?: Options,
): Accessor<number> {
const [filters, options = {}] = parseMutationFilterArgs(arg1, arg2, arg3)
const queryClient = useQueryClient({ context: options.context })
const mutationCache = queryClient.getMutationCache()
const [mutations, setMutations] = createSignal(
queryClient.isMutating(filters),
)
const unsubscribe = mutationCache.subscribe((_result) => {
setMutations(queryClient.isMutating(filters))
})
onCleanup(() => {
unsubscribe()
})
return mutations
}