diff options
author | dan <dan.abramov@gmail.com> | 2024-04-03 23:53:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-03 23:53:44 +0100 |
commit | 295a0949f44ef332c7b33e3cd03d0c2ea89047cf (patch) | |
tree | 96b6cc9ed615c9c7df6ba50628b92e8266fe489a /src/lib | |
parent | 6c728f79dea65d9deeb57a430e6c9fad39940316 (diff) | |
download | voidsky-295a0949f44ef332c7b33e3cd03d0c2ea89047cf.tar.zst |
Factor out QueryProvider (#3331)
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/react-query.tsx (renamed from src/lib/react-query.ts) | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/lib/react-query.ts b/src/lib/react-query.tsx index d6cd3c54b..08b61ee20 100644 --- a/src/lib/react-query.ts +++ b/src/lib/react-query.tsx @@ -1,8 +1,12 @@ +import React from 'react' import {AppState, AppStateStatus} from 'react-native' -import {QueryClient, focusManager} from '@tanstack/react-query' -import {createAsyncStoragePersister} from '@tanstack/query-async-storage-persister' import AsyncStorage from '@react-native-async-storage/async-storage' -import {PersistQueryClientProviderProps} from '@tanstack/react-query-persist-client' +import {createAsyncStoragePersister} from '@tanstack/query-async-storage-persister' +import {focusManager, QueryClient} from '@tanstack/react-query' +import { + PersistQueryClientProvider, + PersistQueryClientProviderProps, +} from '@tanstack/react-query-persist-client' import {isNative} from '#/platform/detection' @@ -35,7 +39,7 @@ focusManager.setEventListener(onFocus => { } }) -export const queryClient = new QueryClient({ +const queryClient = new QueryClient({ defaultOptions: { queries: { // NOTE @@ -56,15 +60,30 @@ export const queryClient = new QueryClient({ }, }) -export const asyncStoragePersister = createAsyncStoragePersister({ +const asyncStoragePersister = createAsyncStoragePersister({ storage: AsyncStorage, key: 'queryCache', }) -export const dehydrateOptions: PersistQueryClientProviderProps['persistOptions']['dehydrateOptions'] = +const dehydrateOptions: PersistQueryClientProviderProps['persistOptions']['dehydrateOptions'] = { shouldDehydrateMutation: (_: any) => false, shouldDehydrateQuery: query => { return STORED_CACHE_QUERY_KEYS.includes(String(query.queryKey[0])) }, } + +const persistOptions = { + persister: asyncStoragePersister, + dehydrateOptions, +} + +export function QueryProvider({children}: {children: React.ReactNode}) { + return ( + <PersistQueryClientProvider + client={queryClient} + persistOptions={persistOptions}> + {children} + </PersistQueryClientProvider> + ) +} |