-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
89 lines (79 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
77
78
79
80
81
82
83
84
85
86
87
88
import React, { useEffect, useState } from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { protectedRoutes } from './src/routes/ProtectedRoute';
import { publicRoutes } from './src/routes/PublicRoute';
import { useFonts } from 'expo-font';
import { enableScreens } from 'react-native-screens';
import Text from './src/theme/Text';
import FlashMessage from "react-native-flash-message";
import { getAuth, onAuthStateChanged, signOut } from 'firebase/auth';
import { auth } from './src/config/firebaseConfig';
import { ActivityIndicator, View } from 'react-native';
import { colors } from './src/theme/colors';
enableScreens();
const Stack = createNativeStackNavigator();
export default function App() {
const [loaded] = useFonts({
'GraphikRegular': require('./assets/fonts/GraphikRegular.otf'),
'GraphikMedium': require('./assets/fonts/GraphikMedium.otf'),
'GraphikSemibold': require('./assets/fonts/GraphikSemibold.otf'),
'GraphikBold': require('./assets/fonts/GraphikBold.otf'),
})
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true)
// const user = false;
useEffect(() => {
const authSubscription = onAuthStateChanged(auth, (user) => {
if (user) {
setUser(user);
setLoading(false);
} else {
setUser(null);
setLoading(false);
}
})
return authSubscription;
}, [])
// useEffect(()=>{
// signOut(auth);
// },[])
if (loading) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<ActivityIndicator color="blue" size="large" />
</View>
)
}
// if (!loaded) {
// return <Text>Font is loading...</Text>
// }
return (
<NavigationContainer style={{ paddingHorizontal: 20 }}>
<Stack.Navigator>
{
user ?
protectedRoutes.map((route, index) => (
<Stack.Screen
key={index + 1}
name={route.name}
// component={route.component}
options={{ headerShown: route.headerShown, title: route.title, headerTintColor: colors.green, headerTitleAlign: 'center' }}
>
{(props) => <route.component {...props} user={user} />}
</Stack.Screen>
))
: publicRoutes.map((route, index) => (
<Stack.Screen
key={index + 1}
name={route.name}
component={route.component}
options={{ headerShown: route.headerShown, title: route.title, headerTintColor: colors.green, headerTitleAlign: 'center' }}
></Stack.Screen>
))
}
</Stack.Navigator>
<FlashMessage position="top" />
</NavigationContainer>
);
}