@@ -37,12 +37,27 @@ export interface UseSuspenseQueryResult<
37
37
client : ApolloClient < any > ;
38
38
data : TData ;
39
39
error : ApolloError | undefined ;
40
- fetchMore : ObservableQueryFields < TData , TVariables > [ 'fetchMore' ] ;
40
+ fetchMore : FetchMoreFunction < TData , TVariables > ;
41
41
networkStatus : NetworkStatus ;
42
- refetch : ObservableQueryFields < TData , TVariables > [ 'refetch' ] ;
43
- subscribeToMore : ObservableQueryFields < TData , TVariables > [ 'subscribeToMore' ] ;
42
+ refetch : RefetchFunction < TData , TVariables > ;
43
+ subscribeToMore : SubscribeToMoreFunction < TData , TVariables > ;
44
44
}
45
45
46
+ type FetchMoreFunction <
47
+ TData ,
48
+ TVariables extends OperationVariables
49
+ > = ObservableQueryFields < TData , TVariables > [ 'fetchMore' ] ;
50
+
51
+ type RefetchFunction <
52
+ TData ,
53
+ TVariables extends OperationVariables
54
+ > = ObservableQueryFields < TData , TVariables > [ 'refetch' ] ;
55
+
56
+ type SubscribeToMoreFunction <
57
+ TData ,
58
+ TVariables extends OperationVariables
59
+ > = ObservableQueryFields < TData , TVariables > [ 'subscribeToMore' ] ;
60
+
46
61
const SUPPORTED_FETCH_POLICIES : WatchQueryFetchPolicy [ ] = [
47
62
'cache-first' ,
48
63
'network-only' ,
@@ -148,35 +163,56 @@ export function useSuspenseQuery_experimental<
148
163
} ;
149
164
} , [ ] ) ;
150
165
166
+ const fetchMore : FetchMoreFunction < TData , TVariables > = useCallback (
167
+ ( options ) => {
168
+ const promise = observable . fetchMore ( options ) ;
169
+
170
+ suspenseCache . add ( query , watchQueryOptions . variables , {
171
+ promise,
172
+ observable,
173
+ } ) ;
174
+
175
+ return promise ;
176
+ } ,
177
+ [ observable ]
178
+ ) ;
179
+
180
+ const refetch : RefetchFunction < TData , TVariables > = useCallback (
181
+ ( variables ) => {
182
+ const promise = observable . refetch ( variables ) ;
183
+
184
+ suspenseCache . add ( query , watchQueryOptions . variables , {
185
+ promise,
186
+ observable,
187
+ } ) ;
188
+
189
+ return promise ;
190
+ } ,
191
+ [ observable ]
192
+ ) ;
193
+
194
+ const subscribeToMore : SubscribeToMoreFunction < TData , TVariables > =
195
+ useCallback ( ( options ) => observable . subscribeToMore ( options ) , [ observable ] ) ;
196
+
151
197
return useMemo ( ( ) => {
152
198
return {
153
199
client,
154
200
data : result . data ,
155
201
error : errorPolicy === 'ignore' ? void 0 : toApolloError ( result ) ,
156
202
networkStatus : result . networkStatus ,
157
- fetchMore : ( options ) => {
158
- const promise = observable . fetchMore ( options ) ;
159
-
160
- suspenseCache . add ( query , watchQueryOptions . variables , {
161
- promise,
162
- observable,
163
- } ) ;
164
-
165
- return promise ;
166
- } ,
167
- refetch : ( variables ?: Partial < TVariables > ) => {
168
- const promise = observable . refetch ( variables ) ;
169
-
170
- suspenseCache . add ( query , watchQueryOptions . variables , {
171
- promise,
172
- observable,
173
- } ) ;
174
-
175
- return promise ;
176
- } ,
177
- subscribeToMore : ( options ) => observable . subscribeToMore ( options ) ,
203
+ fetchMore,
204
+ refetch,
205
+ subscribeToMore,
178
206
} ;
179
- } , [ client , result , observable , errorPolicy ] ) ;
207
+ } , [
208
+ client ,
209
+ fetchMore ,
210
+ refetch ,
211
+ result ,
212
+ observable ,
213
+ errorPolicy ,
214
+ subscribeToMore ,
215
+ ] ) ;
180
216
}
181
217
182
218
function validateOptions ( options : WatchQueryOptions ) {
0 commit comments