/
useInfiniteQuery.ts
115 lines (107 loc) 路 3.1 KB
/
useInfiniteQuery.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import { InfiniteQueryObserver } from '@tanstack/query-core'
import type { UnwrapRef } from 'vue-demi'
import type {
QueryObserver,
QueryFunction,
QueryKey,
InfiniteQueryObserverResult,
} from '@tanstack/query-core'
import { useBaseQuery } from './useBaseQuery'
import type { UseQueryReturnType } from './useBaseQuery'
import type {
WithQueryClientKey,
VueInfiniteQueryObserverOptions,
DistributiveOmit,
} from './types'
export type UseInfiniteQueryOptions<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
> = WithQueryClientKey<
VueInfiniteQueryObserverOptions<
TQueryFnData,
TError,
TData,
TQueryFnData,
TQueryKey
>
>
type InfiniteQueryReturnType<TData, TError> = UseQueryReturnType<
TData,
TError,
InfiniteQueryObserverResult<TData, TError>
>
export type UseInfiniteQueryReturnType<TData, TError> = DistributiveOmit<
InfiniteQueryReturnType<TData, TError>,
'fetchNextPage' | 'fetchPreviousPage' | 'refetch' | 'remove'
> & {
fetchNextPage: InfiniteQueryObserverResult<TData, TError>['fetchNextPage']
fetchPreviousPage: InfiniteQueryObserverResult<
TData,
TError
>['fetchPreviousPage']
refetch: InfiniteQueryObserverResult<TData, TError>['refetch']
remove: InfiniteQueryObserverResult<TData, TError>['remove']
}
export function useInfiniteQuery<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
>(
options: UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
): UseInfiniteQueryReturnType<TData, TError>
export function useInfiniteQuery<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
>(
queryKey: TQueryKey,
options?: Omit<
UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
'queryKey'
>,
): UseInfiniteQueryReturnType<TData, TError>
export function useInfiniteQuery<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
>(
queryKey: TQueryKey,
queryFn: QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>,
options?: Omit<
UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
'queryKey' | 'queryFn'
>,
): UseInfiniteQueryReturnType<TData, TError>
export function useInfiniteQuery<
TQueryFnData,
TError,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
>(
arg1:
| TQueryKey
| UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
arg2?:
| QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>
| UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
arg3?: UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
): UseInfiniteQueryReturnType<TData, TError> {
const result = useBaseQuery(
InfiniteQueryObserver as typeof QueryObserver,
arg1,
arg2,
arg3,
) as InfiniteQueryReturnType<TData, TError>
return {
...result,
fetchNextPage: result.fetchNextPage.value,
fetchPreviousPage: result.fetchPreviousPage.value,
refetch: result.refetch.value,
remove: result.remove.value,
}
}