-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
87 lines (75 loc) · 2.46 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
import 'react-native-gesture-handler'
import { registerRootComponent } from 'expo'
import React, { useEffect, useState } from 'react'
import { NavigationContainer } from '@react-navigation/native'
import { createStackNavigator } from '@react-navigation/stack'
import { LoginScreen, HomeScreen, RegistrationScreen } from './src/screens'
import { decode, encode } from 'base-64'
import AppLoading from "expo-app-loading"
import { useFonts, Inter_900Black } from '@expo-google-fonts/inter'
import { firebase } from './src/firebase/config'
if (!global.btoa) { global.btoa = encode }
if (!global.atob) { global.atob = decode }
const Stack = createStackNavigator()
export default function App() {
const [loading, setLoading] = useState(true)
const [user, setUser] = useState(null)
let [fontLoaded] = useFonts({
Inter_900Black,
})
useEffect( () => {
const usersRef = firebase.firestore().collection('users')
firebase.auth().onAuthStateChanged(user => {
if(user){
usersRef
.doc(user.uid)
.get()
.then((document)=> {
const userData = document.data()
setUser(userData)
setLoading(false)
})
.catch((error)=>{
setLoading(false)
})
} else {
setLoading(false)
console.log('no user')
}
})
}, [user])
if (!fontLoaded || loading) {
return <AppLoading></AppLoading>
}
return (
<NavigationContainer>
<Stack.Navigator>
{user != null ?
( <>
<Stack.Screen name="Home">
{props => <HomeScreen {...props} userLoged={user} extraData={user}></HomeScreen>}
</Stack.Screen>
{/* <Stack.Screen name="Login">
{props => <LoginScreen {...props} setUser={setUser} extraData={user}></LoginScreen>}
</Stack.Screen>
<Stack.Screen name="Registration" component={RegistrationScreen}></Stack.Screen> */}
</>
)
:
(
<>
<Stack.Screen name="Login" component={LoginScreen}></Stack.Screen>
<Stack.Screen name="Registration" component={RegistrationScreen}></Stack.Screen>
<Stack.Screen name="Home"
>
{props => <HomeScreen {...props} extraData={user}></HomeScreen>}
</Stack.Screen>
</>
)
}
</Stack.Navigator>
</NavigationContainer>
)
//}
}
registerRootComponent(App);