This repository has been archived by the owner on Jul 16, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.android.js
124 lines (105 loc) · 3.72 KB
/
index.android.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
123
124
/* Copyright 2017 Flow Team
* Flow Team members at the time of this writing:
* Ken Beard, Zach Clark, Jonathan Ming, Justin Rohweller, George Vine
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// index.android.js
// Flow
'use strict';
import React, { Component } from 'react';
import { AppRegistry, Navigator, Text, AsyncStorage, Alert } from 'react-native';
import AddMeter from './scenes/add-meter';
import ChangeAccount from './scenes/change-account';
import Login from './scenes/login';
import Graphs from './scenes/graphs';
import Meters from './scenes/meters';
import Overview from './scenes/overview';
import Register from './scenes/register';
import Settings from './scenes/settings';
import Splash from './scenes/splash';
import NavDrawerAndroid from './components/nav-drawer.android';
export default class FlowApp extends Component {
constructor(props) {
super(props);
// Initialize state variables
this.state = {
drawerLockMode: 'locked-closed',
navigator: null,
route: null
};
this.logout = this.logout.bind(this);
}
render() {
return (
<Navigator
initialRoute={{ name: 'splash' }}
configureScene={(route) => route.sceneConfig || Navigator.SceneConfigs.FloatFromBottomAndroid}
renderScene={(route, navigator) => {
let scene = <Text>Bad route name given!</Text>;
let drawerLock = 'unlocked';
switch (route.name) {
case 'splash':
drawerLock = 'locked-closed';
scene = <Splash pushRoute={navigator.push}/>;
break;
case 'login':
drawerLock = 'locked-closed';
scene = <Login pushRoute={navigator.push}/>;
break;
case 'register':
drawerLock = 'locked-closed';
scene = <Register pushRoute={navigator.push}/>;
break;
case 'settings':
scene = <Settings logout={() => this.logout(navigator)} {...route.passProps}/>;
break;
case 'changeAccount':
scene = <ChangeAccount/>;
break;
case 'meters':
scene = <Meters pushRoute={navigator.push} {...route.passProps}/>;
break;
case 'addMeter':
scene = <AddMeter finishAction={() => navigator.pop()}/>;
break;
case 'overview':
scene = <Overview {...route.passProps}/>;
break;
case 'graphs':
drawerLock = 'locked-closed';
scene = <Graphs {...route.passProps}/>;
break;
}
return (
<NavDrawerAndroid
drawerLockMode={drawerLock}
pushRoute={navigator.push}
popRoute={navigator.pop}
logout={() => this.logout(navigator)}
currentRouteName={route.name}>
{scene}
</NavDrawerAndroid>
);
}}
/>
);
}
logout(navigator) {
AsyncStorage.multiRemove(['email', 'token', 'firstName'], (err) => {
if (err) Alert.alert('Error', err.toString());
navigator.resetTo({name: 'splash'});
});
}
}
AppRegistry.registerComponent('FlowApp', () => FlowApp);