-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathApp.js
76 lines (68 loc) · 2.83 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
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import LoginScreen from "./app/screens/LoginScreen.js";
import RegisterScreen from "./app/screens/RegisterScreen.js";
import { useFonts } from "expo-font";
import React, { useState, useEffect } from "react";
import { NavigationContainer } from "@react-navigation/native";
import BottomTab from "./app/screens/BottomTab.js";
import CreateItemScreen from "./app/screens/CreateItemScreen.js";
import LocationProvider from "./contexts/LocationContext.js";
import UserScreen from "./app/screens/UserScreen.js";
import EndScreen from "./app/screens/EndScreen.js";
import UpdateUserScreen from './app/screens/UpdateUserScreen.js';
import UserProvider from "./contexts/UserContext.js";
import RefreshProvider from "./contexts/RefreshContext.js";
import currentIP from "./app/libs/ip.js";
import axios from "axios";
import LandingScreen from "./app/screens/LandingScreen.js";
import TermsAndConditions from "./app/screens/TermsAndConditions.js";
const Stack = createNativeStackNavigator();
export default function App() {
const [expoClientIdValue, setExpoClientIdValue] = useState("");
useEffect(() => {
const getExpoClientId = async () => {
try {
const ip = await currentIP();
const result = await axios({
method: "get",
url: `http://${ip}:9000/googleSignin`,
});
setExpoClientIdValue(result.data);
} catch (error){
console.log("error in expoClient ",error)
}
}
getExpoClientId()
}, [])
let [fontsLoaded] = useFonts({
LatoRegular: require("./app/assets/fonts/Lato-Regular.ttf"),
LatoBold: require("./app/assets/fonts/Lato-Bold.ttf"),
});
if (!fontsLoaded) {
return null;
}
if (!expoClientIdValue) {
return null;
}
return (
<RefreshProvider>
<UserProvider>
<LocationProvider>
<NavigationContainer>
<Stack.Navigator screenOptions={{ headerShown: false }}>
<Stack.Screen name="LandingPage" component={LandingScreen}/>
<Stack.Screen name="Login" >{(props) => <LoginScreen {...props} expoClientIdValue={expoClientIdValue}/>}</Stack.Screen>
<Stack.Screen name="Register" component={RegisterScreen} />
<Stack.Screen name="User" component={UserScreen} />
<Stack.Screen name="UpdateUser" component={UpdateUserScreen} />
<Stack.Screen name="TermsAndConditions" component={TermsAndConditions} />
<Stack.Screen name="UploadForm" component={CreateItemScreen} />
<Stack.Screen name="Main" component={BottomTab} />
<Stack.Screen name="EndScreen" component={EndScreen} />
</Stack.Navigator>
</NavigationContainer>
</LocationProvider>
</UserProvider>
</RefreshProvider>
);
}