-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
98 lines (83 loc) · 3.13 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
import { useState, useEffect } from 'react';
import { View, Text, StyleSheet } from "react-native";
import supabase from "./supabase.js";
import AppLoading from 'expo-app-loading';
import { Themes } from "./assets/Themes";
import { processFontFamily, useFonts } from 'expo-font';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { createStackNavigator } from '@react-navigation/stack';
import { Ionicons } from '@expo/vector-icons';
import { CalendarScreen, FriendsScreen, LoginScreen, ProfileScreen, SignupScreen, WorkoutScreen } from "./app/screens";
const Tab = createBottomTabNavigator();
const Stack = createStackNavigator();
export default function App() {
const [authSession, setAuthSession] = useState(false);
let [fontsLoaded] = useFonts({
Inter: require('./assets/Fonts/Inter-Regular.otf'),
InterBold: require('./assets/Fonts/Inter-Bold.otf')
})
useEffect(() => {
const fetchSession = async () => {
// get session
const { data, error } = await supabase.auth.getSession();
if (error) {
console.log("error getting Supabase session");
} else if (data) {
setAuthSession(data.session);
}
}
fetchSession();
// listen to onAuthStateChange and update authSession
supabase.auth.onAuthStateChange((event, session) => {
console.log(event, session);
setAuthSession(session);
})
}, []);
if (!fontsLoaded) return <AppLoading />;
return (
<NavigationContainer>
{authSession ?
<Tab.Navigator
screenOptions={({ route }) => ({
headerShown: false,
labelStyle: { fontSize: 30 },
tabBarIcon: ({ focused }) => {
let iconName;
if (route.name === 'Friends') {
iconName = focused ? 'people' : 'people-outline';
} else if (route.name === 'Calendar') {
iconName = focused ? 'calendar' : 'calendar-outline';
} else if (route.name === 'Workout') {
iconName = focused ? 'barbell' : 'barbell-outline';
} else if (route.name === 'Profile') {
iconName = focused ? 'person' : 'person-outline';
}
// change color!!!
return <Ionicons name={iconName} size={24} color="black" />;
}
})}>
<Tab.Screen name="Friends" component={FriendsScreen} />
<Tab.Screen name="Calendar" component={CalendarScreen} />
<Tab.Screen name="Workout" component={WorkoutScreen} />
<Tab.Screen name="Profile" component={ProfileScreen} />
</Tab.Navigator>
:
<Stack.Navigator>
<Stack.Screen name="Login" component={LoginScreen} options={{headerShown: false}} />
<Stack.Screen name="Signup" component={SignupScreen} options={{headerShown: false}} />
</Stack.Navigator>
}
</NavigationContainer>
);
}
const styles = StyleSheet.create({
screenContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
screenText: {
fontSize: 32,
},
});