-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathApp.js
More file actions
106 lines (94 loc) · 2.96 KB
/
App.js
File metadata and controls
106 lines (94 loc) · 2.96 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
/*
* DECODE App – A mobile app to control your personal data
* Copyright (C) 2019 – Thoughtworks Ltd.
* Copyright (C) 2019 – DRIBIA Data Research S.L.
*
* DECODE App is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DECODE App is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* email: ula@dribia.com
*/
import React from 'react';
import { Font, ScreenOrientation, SecureStore } from 'expo';
import { Provider } from 'react-redux';
import { YellowBox } from 'react-native';
import {
NavigationProvider,
StackNavigation,
NavigationContext,
} from '@expo/ex-navigation';
import Router from './Router';
import Store from './application/redux/store';
import { initialiseWalletID, retrievePin } from './LocalStorage';
const montserratMedium = require('./assets/fonts/Montserrat-Medium.ttf');
const latoBold = require('./assets/fonts/Lato-Bold.ttf');
const navigationContext = new NavigationContext({
router: Router,
store: Store,
});
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
ready: false,
initialRoute: '',
};
}
async componentWillMount() {
await Font.loadAsync({
'Montserrat-Medium': montserratMedium,
'Lato-Bold': latoBold,
});
await initialiseWalletID();
await this.goToInitialScreen(
() => retrievePin(SecureStore.getItemAsync),
routeName => Router.getRoute(routeName),
);
ScreenOrientation.allowAsync(ScreenOrientation.Orientation.PORTRAIT);
YellowBox.ignoreWarnings(['Class EXHomeModule', 'Class EXTest', 'Class EXDisabledDevMenu', 'Class EXDisabledRedBox']);
this.setState({
ready: true,
});
}
async goToInitialScreen(retrievePinFunc, routerFunc) { // eslint-disable-line
try {
return retrievePinFunc().then((pin) => {
if (pin !== undefined && pin !== null) {
this.setState({
initialRoute: routerFunc('home'),
});
} else {
this.setState({
initialRoute: routerFunc('walkthrough'),
});
}
});
} catch (e) {
this.setState({
initialRoute: routerFunc('walkthrough'),
});
}
}
render() {
if (this.state.ready) {
return (
<Provider store={Store}>
<NavigationProvider context={navigationContext}>
<StackNavigation initialRoute={this.state.initialRoute} />
</NavigationProvider>
</Provider>
);
}
return null;
}
}