on 1ec514b help sign in
bridge/src/walletgen/Walletgen.js
147 lines 3.6 kB history raw
1import React from 'react'
2import * as lodash from 'lodash'
4import Header from './components/Header'
5import Footer from './components/Footer'
7import { NETWORK_STATES, PROFILE_STATES, GEN_STATES } from './lib/constants'
9import PrivacyPolicy from './views/PrivacyPolicy'
10import Welcome from './views/Welcome'
11import Eula from './views/Eula'
12import EulaView from './views/EulaView'
13import Upload from './views/Upload'
14import Understand from './views/Understand'
15import Generate from './views/Generate'
16import Custody from './views/Custody'
17import Download from './views/Download'
18import Done from './views/Done'
20const checkNetwork = () => navigator.onLine
21 ? NETWORK_STATES.ONLINE
22 : NETWORK_STATES.OFFLINE
24const ROUTES = [
25 { path: '/Welcome',
26 Component: Welcome,
27 },
28 { path: '/Eula',
29 Component: Eula,
30 },
31 { path: '/Upload',
32 Component: Upload,
33 },
34 { path: '/Understand',
35 Component: Understand,
36 },
37 { path: '/Custody',
38 Component: Custody,
39 },
40 { path: '/Generate',
41 Component: Generate,
42 },
43 { path: '/Download',
44 Component: Download,
45 },
46 { path: '/Done',
47 Component: Done,
48 },
49 { path: '/PrivacyPolicy',
50 Component: PrivacyPolicy,
51 },
52 { path: '/EulaView',
53 Component: EulaView,
54 }
55];
57const TOTAL_STEPS = 7;
59class Walletgen extends React.Component {
60 constructor(props) {
61 super(props)
62 this.state = {
63 'network': checkNetwork(),
64 'profile.state': PROFILE_STATES.NOSTART,
65 'profile.value': null,
66 'profile.shipCount': 0,
67 'profile.error': '',
68 'eny.state': GEN_STATES.ENY_NOSTART,
69 'eny.value': [],
70 'eny.error': '',
71 'wallets.state': GEN_STATES.DERIVATION_NOSTART,
72 'wallets.value': null,
73 'wallets.error': '',
74 'wallets.genCounter': 0,
75 'paperCollateral.state': GEN_STATES.PAPER_NOSTART,
76 'paperCollateral.value': null,
77 'paperCollateral.error': '',
78 'route': '/Welcome',
79 'lastRoute': '/Welcome',
80 'currentStep': 1,
81 'totalSteps': TOTAL_STEPS,
82 'downloaded': false,
83 'didClickDownload': false,
84 };
85 };
88 componentDidMount = () => {
89 window.addEventListener('online', () => this.setState({'network': NETWORK_STATES.ONLINE}));
90 window.addEventListener('offline', () => this.setState({'network': NETWORK_STATES.OFFLINE}));
91 };
94 setGlobalState = state => this.setState(state)
96 router = (network, path) => {
97 const route = key => {
98 const { Component } = lodash.find(ROUTES, { path: key })
99 const globals = {
100 setGlobalState: this.setGlobalState,
101 ...this.state
102 }
103 return <Component { ...globals } />
104 }
106 return route(path)
108 // return network === NETWORK_STATES.ONLINE
109 // ? <NetworkWarning />
110 // : !(network === NETWORK_STATES.OFFLINE)
111 // ? <h1>Detecting your network state.</h1>
112 // : route(path)
113 }
116 render() {
117 const { network, route, currentStep, lastRoute } = this.state;
119 const routed = this.router(network, route) // hacky prod
120 // const routed = this.router(NETWORK_STATES.OFFLINE, true, route) // hacky dev
122 return (
123 <main className={'container'}>
125 <Header
126 network={ network }
127 currentStep={ currentStep }
128 totalSteps={ TOTAL_STEPS } />
130 <div className={ 'row wrapper' }>
131 <div className={'col-'}>
132 { routed }
133 </div>
134 <div className={'push'} />
135 </div>
137 <Footer
138 route={ route }
139 lastRoute={ lastRoute }
140 setGlobalState={ this.setGlobalState }
141 />
142 </main>
143 );
144 };
145};
147export default Walletgen