@@ -33,10 +33,10 @@ class Passport extends React.Component {
33 let censor = "";
33 let censor = "";
34 const blocks = ['▖','▗','▘','▙','▚','▛','▜','▝','▞','▟'];
34 const blocks = ['▖','▗','▘','▙','▚','▛','▜','▝','▞','▟'];
36− for (var i = 0; i < 12; i++) {
36+ (new UInt32Array(12)).forEach((_, i) => {
37 let index = Math.floor(Math.random() * blocks.length)
37 let index = Math.floor(Math.random() * blocks.length)
38 censor += blocks[index];
38 censor += blocks[index];
41 return censor
41 return censor
@@ -44,14 +44,14 @@ class Passport extends React.Component {
44 // generateCensor() {
44 // generateCensor() {
45 // let blocks = [];
45 // let blocks = [];
47− // for (var i = 0; i < 86; i++) {
47+ // (new UInt32Array(86)).forEach((_, i) => {
48 // let rand = Math.round(Math.random())
48 // let rand = Math.round(Math.random())
49 // let filled = (rand || i === 0 || i === 43)
49 // let filled = (rand || i === 0 || i === 43)
51 // let className = filled ? "passport-block bg-gray-30" : "passport-block"
51 // let className = filled ? "passport-block bg-gray-30" : "passport-block"
53 // blocks.push(<div key={i} data-key={i}className={className}></div>)
53 // blocks.push(<div key={i} data-key={i}className={className}></div>)
56 // return (
56 // return (
57 // <div className="flex flex-wrap passport-censor">
57 // <div className="flex flex-wrap passport-censor">
@@ -135,11 +135,13 @@ class Passport extends React.Component {
137 render() {
137 render() {
138− let patp = this.props.point.matchWith({
138+ let pointVal = this.props.point.matchWith({
139− Just: p => ob.patp(p.value),
139+ Just: p => p.value,
140 Nothing: () => ''
140 Nothing: () => ''
143+ let patp = ob.patp(pointVal)
143 let wallet = this.props.wallet.matchWith({
145 let wallet = this.props.wallet.matchWith({
144 Just: w => w.value,
146 Just: w => w.value,
145 Nothing: () => null
147 Nothing: () => null
@@ -164,60 +166,75 @@ class Passport extends React.Component {
164 let paperReady = this.state.paper && this.props.walletStates.includes(WALLET_STATES.PAPER_READY)
166 let paperReady = this.state.paper && this.props.walletStates.includes(WALLET_STATES.PAPER_READY)
165 let downloadColor = paperReady ? 'green' : 'black'
167 let downloadColor = paperReady ? 'green' : 'black'
171+ disabled={ !paperReady }
172+ prop-size={ 'lg wide' }
173+ prop-color={ downloadColor }
174+ onClick={ this.download }
180+ let paperCollateral = wallet
182+ <PaperCollateralRenderer
183+ wallet={{[pointVal]: wallet}}
184+ className={'extremely-hidden'}
186+ this.setState({paper: data})
187+ this.props.pushWalletState(WALLET_STATES.PAPER_READY)
189+ mode={'REGISTRATION'} />
193+ let walletAddresses = (
194+ <div className="mt-8">
195+ <div className="passport-label text-mono">Ethereum Address</div>
196+ <div className="passport-value">{ownershipAddress || 'Ungenerated'}</div>
198+ <div className="passport-label gray-50 mt-3">Master Ticket</div>
199+ <div className="passport-value passport-censor overflow-hidden">{this.masterCensor}</div>
201+ <div className="passport-label gray-50 mt-5">Management Seed</div>
202+ <div className="passport-value passport-censor overflow-hidden">{this.managementCensor}</div>
206+ let walletMetadata = (
207+ <div className="flex">
208+ <div className="passport-sigil">
211+ <div className="passport-metadata ml-4">
212+ <div className="passport-label text-mono">Point</div>
213+ <div className="text-mono">{patp || '-'}</div>
215+ <div className="passport-label gray-50 mt-6">Created on</div>
216+ <div className="passport-value">{patp ? currentDate : '-' }</div>
218+ <div className="passport-label gray-50 mt-2">Invited by</div>
219+ <div className="passport-value">{this.props.invitedBy || '-'}</div>
169 <div className="passport-border">
226 <div className="passport-border">
170 <div className={`passport ${paperReady && 'passport-filled'}`}>
227 <div className={`passport ${paperReady && 'passport-filled'}`}>
171− <div className="flex">
228+ { walletMetadata}
172− <div className="passport-sigil">
229+ { walletAddresses }
173− {sigil}
230+ { paperCollateral }
175− <div className="passport-metadata ml-4">
176− <div className="passport-label text-mono">Point</div>
177− <div className="text-mono">{patp || '-'}</div>
179− <div className="passport-label gray-50 mt-6">Created on</div>
180− <div className="passport-value">{patp ? currentDate : '-' }</div>
182− <div className="passport-label gray-50 mt-2">Invited by</div>
183− <div className="passport-value">{this.props.invitedBy || '-'}</div>
187− <div className="mt-8">
188− <div className="passport-label text-mono">Ethereum Address</div>
189− <div className="passport-value">{ownershipAddress || 'Ungenerated'}</div>
191− <div className="passport-label gray-50 mt-3">Master Ticket</div>
192− <div className="passport-value passport-censor overflow-hidden">{this.masterCensor}</div>
194− <div className="passport-label gray-50 mt-5">Management Seed</div>
195− <div className="passport-value passport-censor overflow-hidden">{this.managementCensor}</div>
199− <PaperCollateralRenderer
200− wallet={{[this.props.point.value]: wallet}}
201− className={'extremely-hidden'}
203− this.setState({paper: data})
204− this.props.pushWalletState(WALLET_STATES.PAPER_READY)
206− mode={'REGISTRATION'} />
209− <Button
233+ { downloadBtn }
210− disabled={ !paperReady }
211− prop-size={ 'lg wide' }
212− prop-color={ downloadColor }
213− onClick={ this.download }
219− {walletProgress}
236+ { walletProgress }
220− {walletStates}
237+ { walletStates }