-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathApp.js
122 lines (115 loc) · 2.5 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
119
120
121
122
import React, { Component } from "react";
import { Root } from "native-base";
import { Provider } from "react-redux";
import {
createStackNavigator,
createSwitchNavigator,
createAppContainer,
} from "react-navigation";
import { PersistGate } from "redux-persist/integration/react";
import { store, persistor } from "./src/store/configureStore";
import TopBar from "./src/components/TopBar/TopBar";
import Loading from "./src/screens/Loading/Loading";
import Login from "./src/screens/Login/Login";
import BeersList from "./src/screens/BeersList/BeersList";
import BeerAdd from "./src/screens/BeerAdd/BeerAdd";
import Profile from "./src/screens/Profile/Profile";
import BeerDetails from "./src/screens/BeerDetails/BeerDetails";
/**
* Our LoginStack which contains only the Login screen
*/
const LoginStack = createStackNavigator({
Login: {
screen: Login,
navigationOptions: {
header: null,
},
},
});
/**
* Our main AppStack with every app screens, accessible once user is logged in
*/
const AppStack = createStackNavigator({
BeersList: {
screen: BeersList,
navigationOptions: ({ navigation }) => ({
header: (
<TopBar
navigation={navigation}
title="My beers"
leftActionIcon="searchBeers"
rightActionIcon="seeProfile"
/>
),
}),
},
BeerDetails: {
screen: BeerDetails,
navigationOptions: ({ navigation }) => ({
header: (
<TopBar
navigation={navigation}
title="Single beer"
leftActionIcon="goBack"
/>
),
}),
},
BeerAdd: {
screen: BeerAdd,
navigationOptions: ({ navigation }) => ({
header: (
<TopBar
navigation={navigation}
title="Add a new beer"
leftActionIcon="goBack"
/>
),
}),
},
Profile: {
screen: Profile,
navigationOptions: ({ navigation }) => ({
header: (
<TopBar
navigation={navigation}
title="User profile"
leftActionIcon="goBack"
rightActionIcon="logout"
/>
),
}),
},
});
/**
* Our AppContainer that will load a quick Loading screen in charge of choosing if we display the Login or App stack
*/
const AppContainer = createAppContainer(
createSwitchNavigator(
{
Loading: Loading,
Login: LoginStack,
App: AppStack,
},
{
initialRouteName: "Loading",
}
)
);
/**
* Our main App parent component
*/
class App extends Component {
render() {
return (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<Root>
<AppContainer />
</Root>
</PersistGate>
</Provider>
);
}
}
export default App;