-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_layout.tsx
More file actions
72 lines (66 loc) · 2.01 KB
/
_layout.tsx
File metadata and controls
72 lines (66 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { Stack } from "expo-router";
import { StatusBar } from "expo-status-bar";
import { SafeAreaProvider } from "react-native-safe-area-context";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import "react-native-reanimated";
import "../global.css";
import {
DarkTheme,
DefaultTheme,
ThemeProvider,
} from "@react-navigation/native";
import { tokenCache } from "@clerk/clerk-expo/token-cache";
import { ClerkProvider, ClerkLoaded, useAuth } from "@clerk/clerk-expo";
import { useColorScheme } from "@/hooks/use-color-scheme";
import { setConfig } from "@shared";
// Client explicity created outside component to avoid recreation
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 60 * 1000, // 1 min
retry: 1,
refetchOnWindowFocus: false,
},
},
});
export const unstable_settings = {
anchor: "(tabs)",
};
// Component to configure auth provider and the api base url
function AppConfigurator() {
const { getToken } = useAuth();
setConfig({
API_BASE_URL: process.env.EXPO_PUBLIC_API_BASE_URL ?? "",
getToken,
});
return null;
}
export default function RootLayout() {
const colorScheme = useColorScheme();
return (
<ClerkProvider
publishableKey={process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY!}
tokenCache={tokenCache}
>
<ClerkLoaded>
<AppConfigurator />
<QueryClientProvider client={queryClient}>
<SafeAreaProvider>
<ThemeProvider
value={colorScheme === "dark" ? DarkTheme : DefaultTheme}
>
<Stack>
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
<Stack.Screen
name="modal"
options={{ presentation: "modal", title: "Modal" }}
/>
</Stack>
<StatusBar style="auto" />
</ThemeProvider>
</SafeAreaProvider>
</QueryClientProvider>
</ClerkLoaded>
</ClerkProvider>
);
}