Spaces:
Paused
Paused
| 'use client' | |
| import * as React from 'react' | |
| import { shouldThrowError } from '@tanstack/query-core' | |
| import type { | |
| DefaultedQueryObserverOptions, | |
| Query, | |
| QueryKey, | |
| QueryObserverResult, | |
| ThrowOnError, | |
| } from '@tanstack/query-core' | |
| import type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary' | |
| export const ensurePreventErrorBoundaryRetry = < | |
| TQueryFnData, | |
| TError, | |
| TData, | |
| TQueryData, | |
| TQueryKey extends QueryKey, | |
| >( | |
| options: DefaultedQueryObserverOptions< | |
| TQueryFnData, | |
| TError, | |
| TData, | |
| TQueryData, | |
| TQueryKey | |
| >, | |
| errorResetBoundary: QueryErrorResetBoundaryValue, | |
| ) => { | |
| if ( | |
| options.suspense || | |
| options.throwOnError || | |
| options.experimental_prefetchInRender | |
| ) { | |
| // Prevent retrying failed query if the error boundary has not been reset yet | |
| if (!errorResetBoundary.isReset()) { | |
| options.retryOnMount = false | |
| } | |
| } | |
| } | |
| export const useClearResetErrorBoundary = ( | |
| errorResetBoundary: QueryErrorResetBoundaryValue, | |
| ) => { | |
| React.useEffect(() => { | |
| errorResetBoundary.clearReset() | |
| }, [errorResetBoundary]) | |
| } | |
| export const getHasError = < | |
| TData, | |
| TError, | |
| TQueryFnData, | |
| TQueryData, | |
| TQueryKey extends QueryKey, | |
| >({ | |
| result, | |
| errorResetBoundary, | |
| throwOnError, | |
| query, | |
| suspense, | |
| }: { | |
| result: QueryObserverResult<TData, TError> | |
| errorResetBoundary: QueryErrorResetBoundaryValue | |
| throwOnError: ThrowOnError<TQueryFnData, TError, TQueryData, TQueryKey> | |
| query: Query<TQueryFnData, TError, TQueryData, TQueryKey> | undefined | |
| suspense: boolean | undefined | |
| }) => { | |
| return ( | |
| result.isError && | |
| !errorResetBoundary.isReset() && | |
| !result.isFetching && | |
| query && | |
| ((suspense && result.data === undefined) || | |
| shouldThrowError(throwOnError, [result.error, query])) | |
| ) | |
| } | |