Merge branch 'phase-7-query-cache-consolidation'

This commit is contained in:
echo 2026-03-29 15:53:47 +02:00
commit efbfa58c10
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,21 +174,23 @@ export default function RootLayout() {
return ( return (
<SafeAreaProvider> <SafeAreaProvider>
<ClerkProvider tokenCache={tokenCache} publishableKey={publishableKey}> <QueryClientProvider client={queryClient}>
<ClerkLoaded> <ClerkProvider tokenCache={tokenCache} publishableKey={publishableKey}>
<ThemeProvider> <ClerkLoaded>
<NotificationsProvider> <ThemeProvider>
<StatisticsProvider> <NotificationsProvider>
<FitnessGoalsProvider> <StatisticsProvider>
<RecommendationsProvider> <FitnessGoalsProvider>
<AppContent /> <RecommendationsProvider>
</RecommendationsProvider> <AppContent />
</FitnessGoalsProvider> </RecommendationsProvider>
</StatisticsProvider> </FitnessGoalsProvider>
</NotificationsProvider> </StatisticsProvider>
</ThemeProvider> </NotificationsProvider>
</ClerkLoaded> </ThemeProvider>
</ClerkProvider> </ClerkLoaded>
</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];