-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
85 lines (79 loc) · 2.32 KB
/
App.js
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
73
74
75
76
77
78
79
80
81
82
83
84
85
import React, { useState, useEffect } from "react";
import { NavigationContainer } from "@react-navigation/native";
import { useFonts } from "expo-font";
import * as SecureStore from "expo-secure-store";
import SplashScreen from "./SplashScreenView";
import Navigate from "./navigation/navigate";
import { LogBox, Text, View } from "react-native";
import {
ClerkProvider,
ClerkLoaded,
SignedIn,
SignedOut,
} from "@clerk/clerk-expo";
import { Slot } from "expo-router";
import Tabnavigation from "./navigation/Tabnavigation";
const tokenCache = {
async getToken(key) {
try {
const item = await SecureStore.getItemAsync(key);
if (item) {
console.log(`${key} was used 🔐 \n`);
} else {
console.log("No values stored under key: " + key);
}
return item;
} catch (error) {
console.error("SecureStore get item error: ", error);
await SecureStore.deleteItemAsync(key);
return null;
}
},
async saveToken(key, value) {
try {
return SecureStore.setItemAsync(key, value);
} catch (err) {
return;
}
},
};
const publishableKey = process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY;
if (!publishableKey) {
throw new Error(
"Missing Publishable Key. Please set EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY in your .env"
);
}
export default function App() {
const [loaded, error] = useFonts({
outfit: require("./assets/fonts/Outfit-Regular.ttf"),
"outfit-medium": require("./assets/fonts/Outfit-Medium.ttf"),
"outfit-bold": require("./assets/fonts/Outfit-Bold.ttf"),
});
const [isShowSplash, setIsShowSplash] = useState(true);
useEffect(() => {
const timer = setTimeout(() => {
setIsShowSplash(false);
}, 2000);
return () => clearTimeout(timer);
}, []);
LogBox.ignoreLogs(["Linking requires a build-time setting scheme"]);
LogBox.ignoreLogs(["Clerk: Clerk has been loaded with development keys"]);
return (
<ClerkProvider tokenCache={tokenCache} publishableKey={publishableKey}>
<ClerkLoaded>
<SignedIn>
<NavigationContainer>
<Tabnavigation />
</NavigationContainer>
</SignedIn>
{isShowSplash ? (
<SplashScreen />
) : (
<SignedOut>
<Navigate />
</SignedOut>
)}
</ClerkLoaded>
</ClerkProvider>
);
}