initialize react-query provider for mobile app

This commit is contained in:
echo 2026-03-29 15:46:59 +02:00
parent b1f84722af
commit 60d7a7963d
2 changed files with 37 additions and 15 deletions

View File

@ -4,12 +4,14 @@ import * as SecureStore from "expo-secure-store";
import { View, Text } from "react-native"; import { View, Text } from "react-native";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { SafeAreaProvider } from "react-native-safe-area-context"; import { SafeAreaProvider } from "react-native-safe-area-context";
import { QueryClientProvider } from "@tanstack/react-query";
import { validateEnv } from "../utils/env"; import { validateEnv } from "../utils/env";
import { ThemeProvider } from "../contexts/ThemeContext"; import { ThemeProvider } from "../contexts/ThemeContext";
import { StatisticsProvider } from "../contexts/StatisticsContext"; import { StatisticsProvider } from "../contexts/StatisticsContext";
import { FitnessGoalsProvider } from "../contexts/FitnessGoalsContext"; import { FitnessGoalsProvider } from "../contexts/FitnessGoalsContext";
import { RecommendationsProvider } from "../contexts/RecommendationsContext"; import { RecommendationsProvider } from "../contexts/RecommendationsContext";
import { NotificationsProvider } from "../contexts/NotificationsContext"; import { NotificationsProvider } from "../contexts/NotificationsContext";
import { queryClient } from "../lib/query-client";
import log from "../utils/logger"; import log from "../utils/logger";
// Wrapper to use notification permissions hook after ClerkLoaded // Wrapper to use notification permissions hook after ClerkLoaded
@ -172,6 +174,7 @@ export default function RootLayout() {
return ( return (
<SafeAreaProvider> <SafeAreaProvider>
<QueryClientProvider client={queryClient}>
<ClerkProvider tokenCache={tokenCache} publishableKey={publishableKey}> <ClerkProvider tokenCache={tokenCache} publishableKey={publishableKey}>
<ClerkLoaded> <ClerkLoaded>
<ThemeProvider> <ThemeProvider>
@ -187,6 +190,7 @@ export default function RootLayout() {
</ThemeProvider> </ThemeProvider>
</ClerkLoaded> </ClerkLoaded>
</ClerkProvider> </ClerkProvider>
</QueryClientProvider>
</SafeAreaProvider> </SafeAreaProvider>
); );
} }

View File

@ -0,0 +1,18 @@
import { QueryClient } from "@tanstack/react-query";
export const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 30000,
gcTime: 5 * 60 * 1000,
retry: 1,
refetchOnWindowFocus: false,
refetchOnReconnect: true,
},
},
});
export const userScopedKey = (
resource: string,
userId: string,
): [string, string] => [resource, userId];