-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSecondaryNavigator.js
More file actions
293 lines (283 loc) · 7.73 KB
/
SecondaryNavigator.js
File metadata and controls
293 lines (283 loc) · 7.73 KB
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
'use strict';
import React from 'react';
import { Animated, Easing } from 'react-native';
import { createStackNavigator } from 'react-navigation';
// Screens
import Maps from './src/screens/Maps';
import History from './src/screens/History';
import Charger from './src/screens/Charger';
import Settings from './src/screens/Settings';
import Share from './src/screens/Share';
import Mechanic from './src/screens/Mechanic';
import Credits from './src/screens/Credits';
import Admin from './src/screens/Admin';
import AddVehicle from './src/screens/AddVehicle';
import Adress from './src/screens/Adress';
import UserSettings from './src/screens/UserSettings';
import QR from './src/screens/QR';
import Rent from './src/screens/Rent';
import Manage from './src/screens/Manage';
import Feedback from './src/screens/Feedback';
import AddPayment from './src/screens/AddPayment';
import Booking from './src/screens/Booking';
import AddCC from './src/screens/AddCC';
import SendCredit from './src/screens/SendCredit';
import Bitcoin from './src/screens/Bitcoin';
import ConvertDollar from './src/screens/ConvertDollar';
// Headers
import Header from './src/Components/Header';
import ScreenHeader from './src/Components/ScreenHeader';
import SecondaryHeader from './src/Components/SecondaryHeader';
import BitcoinHeader from './src/Components/BitcoinHeader';
import SendBitcoin from './src/screens/SendBitcoin';
const transitionConfig = () => {
return {
transitionSpec: {
duration: 250,
easing: Easing.out(Easing.poly(4)),
timing: Animated.timing,
useNativeDriver: true
},
screenInterpolator: sceneProps => {
const { position, layout, scene, index, scenes } = sceneProps;
const toIndex = index;
const thisSceneIndex = scene.index;
const height = layout.initHeight;
const width = layout.initWidth;
const translateX = position.interpolate({
inputRange: [thisSceneIndex - 1, thisSceneIndex, thisSceneIndex + 1],
outputRange: [width, 0, 0]
});
// Since we want the card to take the same amount of time
// to animate downwards no matter if it's 3rd on the stack
// or 53rd, we interpolate over the entire range from 0 - thisSceneIndex
const translateY = position.interpolate({
inputRange: [0, thisSceneIndex],
outputRange: [height, 0]
});
const slideFromRight = { transform: [{ translateX }] };
const slideFromBottom = { transform: [{ translateY }] };
const lastSceneIndex = scenes[scenes.length - 1].index;
// Test whether we're skipping back more than one screen
if (lastSceneIndex - toIndex > 1) {
// Do not transoform the screen being navigated to
if (scene.index === toIndex) return;
// Hide all screens in between
if (scene.index !== lastSceneIndex) return { opacity: 0 };
// Slide top screen down
return slideFromBottom;
}
return slideFromRight;
}
};
};
// Home
export const Home = createStackNavigator(
{
Home: {
screen: Maps,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <Header navigation={navigation} />
})
},
Address: {
screen: Adress,
navigationOptions: ({ navigation }) => ({
header: <ScreenHeader title="Address" navigation={navigation} />
})
},
QR: {
screen: QR,
navigationOptions: ({ navigation }) => ({
header: (
<SecondaryHeader title="Pick up scooter" navigation={navigation} />
)
})
},
Rent: {
screen: Rent,
navigationOptions: ({ navigation }) => ({
header: (
<SecondaryHeader title="Rent a scooter" navigation={navigation} />
)
})
},
AddPayment: {
screen: AddPayment,
navigationOptions: ({ navigation }) => ({
header: <SecondaryHeader title="Add Payment" navigation={navigation} />
})
},
AddCC: {
screen: AddCC,
navigationOptions: ({ navigation }) => ({
header: (
<SecondaryHeader title="Add Credit Card" navigation={navigation} />
)
})
},
Booking: {
screen: Booking,
navigationOptions: ({ navigation }) => ({
header: (
<SecondaryHeader title="Booking Duration" navigation={navigation} />
)
})
}
},
{
initialRouteName: 'Home',
transitionConfig
}
);
// History
export const HistoryScreen = createStackNavigator({
History: {
screen: History,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <ScreenHeader title="My History" navigation={navigation} />
})
}
});
// Feedback
export const FeedbackScreen = createStackNavigator({
History: {
screen: Feedback,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <ScreenHeader title="Feedback" navigation={navigation} />
})
}
});
//Become a charger
export const ChargerScreen = createStackNavigator({
History: {
screen: Charger,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <ScreenHeader title="Become a charger" navigation={navigation} />
})
}
});
//Settings
export const SettingsScreen = createStackNavigator(
{
Settings: {
screen: Settings,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <ScreenHeader title="Settings" navigation={navigation} />
})
},
UserSettings: {
screen: UserSettings,
navigationOptions: ({ navigation }) => ({
header: <SecondaryHeader title="Settings" navigation={navigation} />
})
},
Admin: {
screen: Admin,
navigationOptions: ({ navigation }) => ({
header: <SecondaryHeader title="Admin" navigation={navigation} />
})
},
Vehicle: {
screen: AddVehicle,
navigationOptions: ({ navigation }) => ({
header: <SecondaryHeader title="Add vehicle" navigation={navigation} />
})
},
Manage: {
screen: Manage,
navigationOptions: ({ navigation }) => ({
header: <SecondaryHeader title="Manage Users" navigation={navigation} />
})
}
},
{
initialRouteName: 'Settings',
transitionConfig
}
);
export const UserSettingsScreen = createStackNavigator(
{
UserSettings: {
screen: UserSettings,
navigationOptions: ({ navigation }) => ({
header: <ScreenHeader title="Settings" navigation={navigation} />
})
}
},
{ transitionConfig }
);
export const ShareScreen = createStackNavigator({
History: {
screen: Share,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <ScreenHeader title="Promo Code" navigation={navigation} />
})
}
});
export const MechanicScreen = createStackNavigator({
History: {
screen: Mechanic,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <ScreenHeader title="Become a mechanic" navigation={navigation} />
})
}
});
export const CreditsScreen = createStackNavigator({
Credits: {
screen: Credits,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <ScreenHeader title="My Credits" navigation={navigation} />
})
},
SendCredits: {
screen: SendCredit,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: (
<SecondaryHeader title="Send From Credit" navigation={navigation} />
)
})
},
Convert: {
screen: ConvertDollar,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <SecondaryHeader title="Convert" navigation={navigation} />
})
}
});
export const BitcoinScreen = createStackNavigator(
{
Bitcoin: {
screen: Bitcoin,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <BitcoinHeader title="Bitcoin Wallet" navigation={navigation} />
})
},
Convert: {
screen: ConvertDollar,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <SecondaryHeader title="Convert" navigation={navigation} />
})
},
SendBitcoin: {
screen: SendBitcoin,
navigationOptions: ({ navigation }) => ({
disableBack: true,
header: <SecondaryHeader title="Send BTC" navigation={navigation} />
})
}
},
{ transitionConfig, initialRouteName: 'Bitcoin' }
);