-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.tsx
62 lines (55 loc) · 1.8 KB
/
App.tsx
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
import AsyncStorage from "@react-native-community/async-storage";
import axios from "axios";
import React from "react";
import { StatusBar } from "react-native";
// Context
import { AuthContext } from "./src/helpers/AuthContext";
// Routes
import AuthRoute from "./src/routes/AuthRoute";
import MainRoute from "./src/routes/MainRoute";
export default function App() {
const [userToken, setUserToken] = React.useState<string | null>(null);
React.useEffect(() => {
onAppLoad();
}, []);
async function onAppLoad() {
// Set the default URL on axios
axios.defaults.baseURL = "https://apiadmin.oauthx.mv";
axios.defaults.headers.post["Content-Type"] =
"application/x-www-form-urlencoded";
// Get the user token
const token = await getTokenFromAsyncStorage();
setUserToken(token);
}
const authContext = React.useMemo(
() => ({
signIn: async (data: any) => {
await AsyncStorage.setItem("@User:jwt", data.jwt);
await AsyncStorage.setItem("@User:id", String(data.user.id));
await AsyncStorage.setItem("@User", JSON.stringify(data));
setUserToken(data.jwt);
},
signUp: async (data: JSON) => {
console.log("Signing up...");
},
signOut: async () => {
await AsyncStorage.setItem("@User:jwt", "");
await AsyncStorage.setItem("@User:id", "");
await AsyncStorage.setItem("@User", "");
setUserToken(null);
console.log("signing out...");
},
}),
[]
);
console.log(userToken);
return (
<AuthContext.Provider value={authContext}>
{userToken === null || userToken === "" ? <AuthRoute /> : <MainRoute />}
</AuthContext.Provider>
);
}
export async function getTokenFromAsyncStorage() {
const token = await AsyncStorage.getItem("@User:jwt");
return token;
}