-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
118 lines (115 loc) · 3.25 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import React, { useEffect, useState } from "react";
import Home from "./Components/Home";
import { NavigationContainer } from "@react-navigation/native";
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import GoalDetails from "./Components/GoalDetails";
import { Button } from "react-native";
import Login from "./Components/Login";
import Signup from "./Components/Signup";
import { auth } from "./Firebase/firebaseSetup";
import { onAuthStateChanged, signOut } from "firebase/auth";
import Profile from "./Components/Profile";
import PressableButton from "./Components/PressableButton";
import AntDesign from "@expo/vector-icons/AntDesign";
import Map from "./Components/Map";
import * as Notifications from "expo-notifications";
Notifications.setNotificationHandler({
handleNotification: async () => {
return { shouldShowAlert: true };
},
});
const Stack = createNativeStackNavigator();
const authStack = (
<>
<Stack.Screen name="Signup" component={Signup} />
<Stack.Screen name="Login" component={Login} />
</>
);
const appStack = (
<>
<Stack.Screen
name="Home"
component={Home}
options={({ navigation }) => {
return {
title: "My Goals",
headerRight: () => {
return (
<PressableButton
componentStyle={{ backgroundColor: "purple" }}
pressedHandler={() => {
navigation.navigate("Profile");
}}
>
<AntDesign name="user" size={24} color="white" />
</PressableButton>
);
},
};
}}
/>
<Stack.Screen
name="Details"
component={GoalDetails}
options={({ route }) => {
return {
title: route.params ? route.params.goalData.text : "More Details",
// headerRight: () => {
// return (
// <Button
// title="Warning"
// onPress={() => {
// console.log("warning");
// }}
// />
// );
// },
};
}}
/>
<Stack.Screen
name="Profile"
component={Profile}
options={{
headerRight: () => {
return (
<PressableButton
componentStyle={{ backgroundColor: "purple" }}
pressedHandler={() => {
signOut(auth);
}}
>
<AntDesign name="logout" size={24} color="white" />
</PressableButton>
);
},
}}
/>
<Stack.Screen name="Map" component={Map} />
</>
);
export default function App() {
const [isUserLoggedIn, setIsUserLoggedIn] = useState(false);
useEffect(() => {
onAuthStateChanged(auth, (user) => {
if (user) {
setIsUserLoggedIn(true);
} else {
setIsUserLoggedIn(false);
}
//based on the user variable, set the state variable isUserLoggedIn
});
}, []);
return (
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerStyle: { backgroundColor: "purple" },
headerTintColor: "white",
}}
>
{isUserLoggedIn ? appStack : authStack}
</Stack.Navigator>
</NavigationContainer>
);
}