on master help sign in
- Wallet download screen mostly implemented
commit4c52e0571d55c259b8c8b3705925a39f79fcf71c authorChris Johnson <chris@cjohnson.io> dateMon 22 Apr 2019, 04:13 (8 years ago) parentdfeb347
3 files changed+118−55
src/bridge/components/Passport.js+87−52 src/bridge/style/extend.css+13 src/bridge/views/InviteLogin.js+18−3
src/bridge/components/Passport.js+87−52
@@ -45,11 +45,40 @@ class Passport extends React.Component {
4545 )
4646 }
4747
48+ getCurrentDate() {
49+ let date = new Date()
50+ var fil = function(n) {
51+     return n >= 10 ? n : "0" + n;
52+   };
53+ let fmtDate = `${date.getUTCFullYear()}.` +
54+   `${(date.getUTCMonth() + 1)}.` +
55+   `${fil(date.getUTCDate())}`
56+
57+ return fmtDate
58+ }
59+
60+ getWalletStates() {
61+ console.log('walletStates = ', this.props.walletStates)
62+
63+ let stateElems = this.props.walletStates.map(state => {
64+ return (
65+ <div className="flex justify-between">
66+ <div className="text-mono text-sm lh-6 green-dark">{state}</div>
67+ <div className="text-700 text-sm lh-6 green-dark">✓</div>
68+ </div>
69+ )
70+ })
71+
72+ return (
73+ <div>
74+ {stateElems}
75+ </div>
76+ )
77+ }
78+
4879 render() {
4980 let sigil = null
5081
51− console.log('this.props.point = ', this.props.point)
52−
5382 let patp = this.props.point.matchWith({
5483 Just: p => ob.patp(p.value),
5584 Nothing: () => ''
@@ -60,6 +89,11 @@ class Passport extends React.Component {
6089 Nothing: () => null
6190 })
6291
92+ let ownershipAddress = this.props.wallet.matchWith({
93+ Just: w => w.value.ownership.keys.address,
94+ Nothing: () => null
95+ })
96+
6397 if (patp !== '') {
6498 sigil = pour({
6599 patp: patp,
@@ -70,72 +104,73 @@ class Passport extends React.Component {
70104 sigil = <div className="passport-sigil-blank"></div>
71105 }
72106
107+ let currentDate = this.getCurrentDate()
108+ let walletStates = this.getWalletStates()
109+
73110 return (
74− <div className="passport">
75− <div className="flex">
76− <div className="passport-sigil">
77− {sigil}
111+ <div>
112+ <div className={`passport ${wallet && 'passport-filled'}`}>
113+ <div className="flex">
114+ <div className="passport-sigil">
115+ {sigil}
116+ </div>
117+ <div className="passport-metadata ml-4">
118+ <div className="passport-label text-mono">Point</div>
119+ <div className="text-mono">{patp || '-'}</div>
120+
121+ <div className="passport-label gray-50 mt-6">Created on</div>
122+ <div className="passport-value">{patp ? currentDate : '-' }</div>
123+
124+ <div className="passport-label gray-50 mt-2">Invited by</div>
125+ <div className="passport-value">{this.props.invitedBy || '-'}</div>
126+ </div>
78127 </div>
79− <div className="passport-metadata ml-4">
80− <div className="passport-label text-mono">Point</div>
81− <div className="text-mono">{patp || '-'}</div>
82−
83− <div className="passport-label gray-50 mt-6">Created on</div>
84− <div className="passport-value">{this.props.createdOn || '-'}</div>
85128
86− <div className="passport-label gray-50 mt-2">Invited by</div>
87− <div className="passport-value">{this.props.invitedBy || '-'}</div>
129+ <div className="mt-8">
130+ <div className="passport-label text-mono">Ethereum Address</div>
131+ <div className="passport-value">{ownershipAddress || 'Ungenerated'}</div>
132+
133+ <div className="passport-label gray-50 mt-3">Master Ticket</div>
134+ <div className="passport-value">{ownershipAddress ? this.masterScreen : 'Ungenerated'}</div>
135+
136+ <div className="passport-label gray-50 mt-5">Managment Seed</div>
137+ <div className="passport-value">{ownershipAddress ? this.managementScreen : 'Ungenerated'}</div>
138+
139+ <Button
140+ disabled={ !this.state.paper }
141+ className={ 'mt-8' }
142+ prop-size={ 'lg wide' }
143+ prop-color={ 'green' }
144+ onClick={ this.download }
145+ >
146+ { 'Download' }
147+ </Button>
88148 </div>
89− </div>
90149
91− <div className="mt-8">
92− <div className="passport-label text-mono">Ethereum Address</div>
93− <div className="passport-value">{this.props.ethAddress || 'Ungenerated'}</div>
94−
95− <div className="passport-label gray-50 mt-3">Master Ticket</div>
96− <div className="passport-value">{this.props.ethAddress ? this.masterScreen : 'Ungenerated'}</div>
97−
98− <div className="passport-label gray-50 mt-5">Managment Seed</div>
99− <div className="passport-value">{this.props.ethAddress ? this.managmentScreen : 'Ungenerated'}</div>
100−
101− <Button
102− disabled={ !this.state.paper }
103− className={ 'mt-8' }
104− prop-size={ 'lg wide' }
105− prop-color={ 'green' }
106− onClick={ this.download }
107− >
108− { 'Download' }
109− </Button>
150+ {wallet &&
151+ <PaperCollateralRenderer
152+ wallet={{[this.props.point.value]: wallet}}
153+ className={'extremely-hidden'}
154+ callback={data => {
155+ console.log('paper wallet generated')
156+ this.setState({paper: data})
157+ }}
158+ mode={'REGISTRATION'} />
159+ }
160+ </div>
161+ <div className="passport-wallet-states mt-3">
162+ {walletStates}
110163 </div>
111−
112− {wallet &&
113− <PaperCollateralRenderer
114− wallet={this.props.wallet}
115− className={'extremely-hidden'}
116− callback={data => {
117− this.setState({paper: data})
118− }}
119− mode={'REGISTRATION'} />
120− }
121164 </div>
122165 )
123166 }
124167}
125168
126169Passport.propTypes = {
127− 'patp': PropTypes.string,
128− 'createdOn': PropTypes.string,
129− 'invitedBy': PropTypes.string,
130− 'ethAddress': PropTypes.string,
131170 wallet: PropTypes.object
132171};
133172
134173Passport.defaultProps = {
135− 'patp': '',
136− 'createdOn': '',
137− 'invitedBy': '',
138− 'ethAddress': '',
139174 wallet: null
140175};
141176
src/bridge/style/extend.css+13
@@ -212,6 +212,10 @@ footer,
212212 font-size: 8rem;
213213}
214214
215+.lh-6 {
216+ line-height: 6rem;
217+}
218+
215219.lh-8 {
216220 line-height: 8rem;
217221}
@@ -499,6 +503,15 @@ code {
499503 padding: 24px;
500504}
501505
506+.passport .text-sm {
507+ font-size: 3rem;
508+ line-height: 6rem;
509+}
510+
511+.passport-filled {
512+ background-color: #C5FBE7;
513+}
514+
502515.passport-block {
503516 width: 8px;
504517 height: 8px;
src/bridge/views/InviteLogin.js+18−3
@@ -28,6 +28,13 @@ const INVITE_STAGES = {
2828 INVITE_TRANSACTIONS: "invite transactions"
2929}
3030
31+const WALLET_STATES = {
32+ UNLOCKING: "Unlocking invite wallet",
33+ GENERATING: "Generating your wallet",
34+ GENERATED: "Wallet generation complete",
35+ DOWNLOADED: "Wallet downloaded"
36+}
37+
3138class InviteLogin extends React.Component {
3239
3340 constructor(props) {
@@ -40,7 +47,8 @@ class InviteLogin extends React.Component {
4047 realWallet: Nothing(),
4148 walletReady: false,
4249 continueReady: true,
43− stage: INVITE_STAGES.INVITE_LOGIN
50+ stage: INVITE_STAGES.INVITE_LOGIN,
51+ walletStates: []
4452 }
4553
4654 this.pointPlaceholder = placeholder(4)
@@ -74,6 +82,7 @@ class InviteLogin extends React.Component {
7482 async unlockInviteWallet(inviteTicket) {
7583 this.setState({
7684 continueReady: false,
85+ walletStates: this.state.walletStates.concat(WALLET_STATES.UNLOCKING),
7786 stage: INVITE_STAGES.INVITE_WALLET
7887 });
7988
@@ -99,6 +108,10 @@ class InviteLogin extends React.Component {
99108
100109 const incoming = await azimuth.azimuth.getTransferringFor(ctrcs, addr)
101110
111+ this.setState({
112+ walletStates: this.state.walletStates.concat(WALLET_STATES.GENERATING)
113+ })
114+
102115 let point
103116 let wallet
104117
@@ -113,7 +126,8 @@ class InviteLogin extends React.Component {
113126
114127 this.setState({
115128 realPoint: point,
116− realWallet: Just(wallet)
129+ realWallet: Just(wallet),
130+ walletStates: this.state.walletStates.concat(WALLET_STATES.GENERATED)
117131 })
118132 }
119133
@@ -189,7 +203,7 @@ class InviteLogin extends React.Component {
189203 return (
190204 <Button
191205 className={'mt-4'}
192− prop-size={'md'}
206+ prop-size={'lg'}
193207 prop-color={btnColor}
194208 disabled={!this.state.continueReady}
195209 onClick={clickHandler}
@@ -243,6 +257,7 @@ class InviteLogin extends React.Component {
243257 <Passport
244258 point={this.state.realPoint}
245259 wallet={this.state.realWallet}
260+ walletStates={this.state.walletStates}
246261 confirmWalletDownload={this.confirmWalletDownload}
247262 />
248263 </Col>