UNPKG

jotai-tanstack-query

Version:
56 lines (53 loc) • 1.44 kB
import { type DefaultError, type InfiniteData, InfiniteQueryObserver, QueryClient, type QueryKey, QueryObserver, } from '@tanstack/query-core' import { Getter, WritableAtom, atom } from 'jotai' import { queryClientAtom } from './_queryClientAtom' import { baseAtomWithQuery } from './baseAtomWithQuery' import { AtomWithSuspenseInfiniteQueryOptions, AtomWithSuspenseInfiniteQueryResult, } from './types' import { defaultThrowOnError } from './utils' export function atomWithSuspenseInfiniteQuery< TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( getOptions: ( get: Getter ) => AtomWithSuspenseInfiniteQueryOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam >, getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom) ): WritableAtom<AtomWithSuspenseInfiniteQueryResult<TData, TError>, [], void> { const suspenseOptionsAtom = atom((get) => { const options = getOptions(get) return { ...options, enabled: true, suspense: true, throwOnError: defaultThrowOnError, } }) return baseAtomWithQuery( (get: Getter) => get(suspenseOptionsAtom), InfiniteQueryObserver as typeof QueryObserver, getQueryClient ) as unknown as WritableAtom< AtomWithSuspenseInfiniteQueryResult<TData, TError>, [], void > }