-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
78 lines (68 loc) · 2.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
import React, { useEffect, useContext } from 'react';
import { Alert } from 'react-native';
import { createStackNavigator } from '@react-navigation/stack'
import { NavigationContainer } from '@react-navigation/native'
import Tabs from './navigation/tab.js'
import BookDetails from './screens/BookDetails.js';
import Login from './screens/Login'
import Camera from './screens/Camera.js'
import { StatusBar } from 'expo-status-bar'
import AsyncStorage from "./utils/storage.js";
import BookState from './context/Book/BookState.js';
import BookContext from './context/Book/BookContext.js'
import UserState from './context/User/UserState.js';
import UserContext from './context/User/UserContext.js';
import { loadFavorites } from "./persistenciaFavs/db.js";
const Stack = createStackNavigator()
const App = () => {
const { state, setUserAuthenticated } = useContext(UserContext)
const { setBooksHistory } = useContext(BookContext)
const checkUser = async () => {
const user = await AsyncStorage.getData('@userData')
if (user) {
setUserAuthenticated(user)
try {
await loadFavorites(user.id)
} catch (error) {
Alert.alert('¡Lo sentimos!', 'Error inesperado, intente de nuevo', [{text: 'ok'}])
}
}
return user
}
const checkBooksUser = async () => {
const book = await AsyncStorage.getData('@booksHistory')
if (book) {
setBooksHistory(book)
}
}
useEffect(() => {
checkUser()
checkBooksUser()
}, []);
return (
<NavigationContainer>
<Stack.Navigator screenOptions={{ headerShown: false }} >
{!state ?
<>
<Stack.Screen name='Login' component={Login}/>
</>
:
null
}
<Stack.Screen name='Home' component={Tabs} />
<Stack.Screen name='Camera' component={Camera} />
<Stack.Screen name='BookDetails' component={BookDetails} />
</Stack.Navigator>
<StatusBar style='light' backgroundColor='#1E1B26' />
</NavigationContainer>
)
};
export default function AppWrapper() {
return (
<UserState>
<BookState>
<App />
</BookState>
</UserState>
);
}