@@ -7,10 +7,8 @@ import {
77 functionalUpdate ,
88 isCancelable ,
99 isCancelledError ,
10- isDocumentVisible ,
11- isOnline ,
12- isServer ,
1310 isValidTimeout ,
11+ isVisibleAndOnline ,
1412 noop ,
1513 replaceEqualDeep ,
1614 sleep ,
@@ -163,29 +161,17 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
163161 private scheduleGc ( ) : void {
164162 this . clearGcTimeout ( )
165163
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 )
172168 }
173-
174- this . gcTimeout = setTimeout ( ( ) => {
175- this . remove ( )
176- } , this . cacheTime )
177169 }
178170
179171 cancel ( options ?: CancelOptions ) : Promise < void > {
180- const promise : Promise < any > = this . promise || Promise . resolve ( )
172+ const promise = this . promise
181173 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 ( )
189175 }
190176
191177 private clearGcTimeout ( ) {
@@ -231,7 +217,6 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
231217
232218 destroy ( ) : void {
233219 this . clearGcTimeout ( )
234- this . clearTimersObservers ( )
235220 this . cancel ( )
236221 }
237222
@@ -293,7 +278,7 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
293278 fetchObserver . refetch ( )
294279 }
295280
296- // Continue any paused fetch
281+ // Continue fetch if currently paused
297282 this . continueFetch ?.( )
298283 }
299284
@@ -395,8 +380,7 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
395380 params : unknown [ ]
396381 ) : Promise < TData > {
397382 // Create function to fetch the data
398- const queryFn = options . queryFn || defaultQueryFn
399- const fetchData = ( ) => queryFn ( ...params )
383+ const fetchData = ( ) => this . executeQueryFn ( options , params )
400384
401385 // Set to fetching state if not already in it
402386 if ( ! this . state . isFetching ) {
@@ -414,7 +398,6 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
414398 params : unknown [ ] ,
415399 fetchOptions ?: FetchOptions
416400 ) : Promise < TData > {
417- const queryFn = options . queryFn || defaultQueryFn
418401 const fetchMore = fetchOptions ?. fetchMore
419402 const pageParam = fetchMore ?. pageParam
420403 const isFetchingNextPage = fetchMore ?. direction === 'forward'
@@ -434,14 +417,12 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
434417 return Promise . resolve ( pages )
435418 }
436419
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+ } )
445426 }
446427
447428 // Create function to fetch the data
@@ -510,6 +491,15 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
510491 )
511492 }
512493
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+
513503 private tryFetchData (
514504 options : QueryOptions < TData , TError , TQueryFnData > ,
515505 fn : QueryFunction
@@ -604,8 +594,9 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
604594 // Pause if needed
605595 . then ( ( ) => {
606596 // Pause retry if the document is not visible or when the device is offline
607- if ( ! isDocumentVisible ( ) || ! isOnline ( ) ) {
597+ if ( ! isVisibleAndOnline ( ) ) {
608598 return new Promise ( continueResolve => {
599+ // Create callback to continue this fetch
609600 this . continueFetch = continueResolve
610601 } )
611602 }
@@ -621,10 +612,6 @@ export class Query<TData = unknown, TError = unknown, TQueryFnData = TData> {
621612 }
622613}
623614
624- function defaultQueryFn ( ) {
625- return Promise . reject ( )
626- }
627-
628615function getNextPageParam < TData , TError , TQueryFnData > (
629616 options : QueryOptions < TData , TError , TQueryFnData > ,
630617 pages : TQueryFnData [ ]
0 commit comments