-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
112 lines (104 loc) · 3.49 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
import React, { Component } from 'react';
import { Button, Icon } from 'react-native-elements';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { createStackNavigator } from '@react-navigation/stack';
import { Provider } from 'react-redux';
import { Notifications } from 'expo';
import AuthScreen from './screens/AuthScreen';
import WelcomeScreen from './screens/WelcomeScreen';
import MapScreen from './screens/MapScreen';
import DeckScreen from './screens/DeckScreen';
import SettingsScreen from './screens/SettingsScreen';
import ReviewScreen from './screens/ReviewScreen';
import { PersistGate } from 'redux-persist/integration/react';
import configurationStore from './store';
import registerForNotifications from './services/push_notifications';
const AppFlowTabNavigator = createBottomTabNavigator();
const MainTabNavigator = createBottomTabNavigator();
const ReviewNavigator = createStackNavigator();
const Review = () => {
return (
<ReviewNavigator.Navigator>
<ReviewNavigator.Screen
name='Reivew'
component={ReviewScreen}
options={({ navigation }) => ({
title: 'Review Jobs',
headerRight: () => (
<Button
title="Settings"
onPress={() => {navigation.navigate('Settings')}}
buttonStyle={{backgroundColor:"white"}}
titleStyle={{color:"#007aff"}}
/>)
})}
/>
<ReviewNavigator.Screen name='Settings' component={SettingsScreen} />
</ReviewNavigator.Navigator>
)
}
const Main = () => {
return (
<MainTabNavigator.Navigator
tabBarPosition= 'bottom'
tabBarOptions={{ labelStyle: {fontSize: 12} }}
>
<MainTabNavigator.Screen
name='Map'
component={MapScreen}
options={{
tabBarIcon: ({ color, size }) => {
return <Icon name="my-location" size={size} color={color} />
}
}}
/>
<MainTabNavigator.Screen
name='Deck'
component={DeckScreen}
options={{
tabBarLabel: 'Restaurants',
tabBarIcon: ({ color, size }) => {
return <Icon name="restaurant" size={size} color={color} />
}
}}
/>
<MainTabNavigator.Screen
name='Review'
component={Review}
options={{
tabBarLabel: 'Liked Restaurants',
tabBarIcon: ({ color, size }) => {
return <Icon name="favorite" size={size} color={color} />
}
}}
/>
</MainTabNavigator.Navigator>
)
}
const { store, persistor } = configurationStore();
class App extends Component {
componentDidMount() {
registerForNotifications();
Notifications.addListener((notification) => {
console.log('Notification: ', notification);
// Handle notification further
});
}
render() {
return (
<Provider store={store}>
<PersistGate persistor={persistor}>
<NavigationContainer>
<AppFlowTabNavigator.Navigator screenOptions={{ tabBarVisible: false }}>
<AppFlowTabNavigator.Screen name='Welcome' component={WelcomeScreen} />
<AppFlowTabNavigator.Screen name='Auth' component={AuthScreen} />
<AppFlowTabNavigator.Screen name='Main' component={Main} />
</AppFlowTabNavigator.Navigator>
</NavigationContainer>
</PersistGate>
</Provider>
);
}
};
export default App;