@@ -7,10 +7,8 @@ import {
7
7
functionalUpdate ,
8
8
isCancelable ,
9
9
isCancelledError ,
10
- isDocumentVisible ,
11
- isOnline ,
12
- isServer ,
13
10
isValidTimeout ,
11
+ isVisibleAndOnline ,
14
12
noop ,
15
13
replaceEqualDeep ,
16
14
sleep ,
@@ -163,29 +161,17 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
163
161
private scheduleGc ( ) : void {
164
162
this . clearGcTimeout ( )
165
163
166
- if (
167
- isServer ||
168
- this . observers . length > 0 ||
169
- ! isValidTimeout ( this . cacheTime )
170
- ) {
171
- return
164
+ if ( ! this . observers . length && isValidTimeout ( this . cacheTime ) ) {
165
+ this . gcTimeout = setTimeout ( ( ) => {
166
+ this . remove ( )
167
+ } , this . cacheTime )
172
168
}
173
-
174
- this . gcTimeout = setTimeout ( ( ) => {
175
- this . remove ( )
176
- } , this . cacheTime )
177
169
}
178
170
179
171
cancel ( options ?: CancelOptions ) : Promise < void > {
180
- const promise : Promise < any > = this . promise || Promise . resolve ( )
172
+ const promise = this . promise
181
173
this . cancelFetch ?.( options )
182
- return promise . then ( noop ) . catch ( noop )
183
- }
184
-
185
- private clearTimersObservers ( ) : void {
186
- this . observers . forEach ( observer => {
187
- observer . clearTimers ( )
188
- } )
174
+ return promise ? promise . then ( noop ) . catch ( noop ) : Promise . resolve ( )
189
175
}
190
176
191
177
private clearGcTimeout ( ) {
@@ -231,7 +217,6 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
231
217
232
218
destroy ( ) : void {
233
219
this . clearGcTimeout ( )
234
- this . clearTimersObservers ( )
235
220
this . cancel ( )
236
221
}
237
222
@@ -293,7 +278,7 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
293
278
fetchObserver . refetch ( )
294
279
}
295
280
296
- // Continue any paused fetch
281
+ // Continue fetch if currently paused
297
282
this . continueFetch ?.( )
298
283
}
299
284
@@ -395,8 +380,7 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
395
380
params : unknown [ ]
396
381
) : Promise < TData > {
397
382
// Create function to fetch the data
398
- const queryFn = options . queryFn || defaultQueryFn
399
- const fetchData = ( ) => queryFn ( ...params )
383
+ const fetchData = ( ) => this . executeQueryFn ( options , params )
400
384
401
385
// Set to fetching state if not already in it
402
386
if ( ! this . state . isFetching ) {
@@ -414,7 +398,6 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
414
398
params : unknown [ ] ,
415
399
fetchOptions ?: FetchOptions
416
400
) : Promise < TData > {
417
- const queryFn = options . queryFn || defaultQueryFn
418
401
const fetchMore = fetchOptions ?. fetchMore
419
402
const pageParam = fetchMore ?. pageParam
420
403
const isFetchingNextPage = fetchMore ?. direction === 'forward'
@@ -434,14 +417,12 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
434
417
return Promise . resolve ( pages )
435
418
}
436
419
437
- return Promise . resolve ( )
438
- . then ( ( ) => queryFn ( ...params , param ) )
439
- . then ( page => {
440
- newPageParams = previous
441
- ? [ param , ...newPageParams ]
442
- : [ ...newPageParams , param ]
443
- return previous ? [ page , ...pages ] : [ ...pages , page ]
444
- } )
420
+ return this . executeQueryFn ( options , [ ...params , param ] ) . then ( page => {
421
+ newPageParams = previous
422
+ ? [ param , ...newPageParams ]
423
+ : [ ...newPageParams , param ]
424
+ return previous ? [ page , ...pages ] : [ ...pages , page ]
425
+ } )
445
426
}
446
427
447
428
// Create function to fetch the data
@@ -510,6 +491,15 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
510
491
)
511
492
}
512
493
494
+ private executeQueryFn (
495
+ options : QueryOptions < TData , TError , TQueryFnData > ,
496
+ params : unknown [ ]
497
+ ) : Promise < TQueryFnData > {
498
+ return options . queryFn
499
+ ? Promise . resolve ( options . queryFn ( ...params ) )
500
+ : Promise . reject ( )
501
+ }
502
+
513
503
private tryFetchData (
514
504
options : QueryOptions < TData , TError , TQueryFnData > ,
515
505
fn : QueryFunction
@@ -604,8 +594,9 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
604
594
// Pause if needed
605
595
. then ( ( ) => {
606
596
// Pause retry if the document is not visible or when the device is offline
607
- if ( ! isDocumentVisible ( ) || ! isOnline ( ) ) {
597
+ if ( ! isVisibleAndOnline ( ) ) {
608
598
return new Promise ( continueResolve => {
599
+ // Create callback to continue this fetch
609
600
this . continueFetch = continueResolve
610
601
} )
611
602
}
@@ -621,10 +612,6 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
621
612
}
622
613
}
623
614
624
- function defaultQueryFn ( ) {
625
- return Promise . reject ( )
626
- }
627
-
628
615
function getNextPageParam < TData , TError , TQueryFnData > (
629
616
options : QueryOptions < TData , TError , TQueryFnData > ,
630
617
pages : TQueryFnData [ ]
0 commit comments