on master help sign in
- use ternaries for conditional logic

- minor style improvements - throw MISSING_WALLET error if wallet doesn’t generate

commited7b91bb2ed6ea4e90996d450d45fe3668736ee6 authorChris Johnson <chris@cjohnson.io> dateMon 29 Apr 2019, 15:29 (8 years ago) parentc8f0ce9
4 files changed+41−44
src/bridge/components/Header.js+15−22 src/bridge/components/Passport.js+13−18 src/bridge/lib/invite.js+2−1 src/bridge/views/InviteTicket.js+11−3
src/bridge/components/Header.js+15−22
@@ -11,13 +11,8 @@ const Crumbs = (props) => {
1111 // FIXME probably more straightforward to render them normally and just
1212 // return the reversed array of renders
1313 const rendered = history.map((route, idx) => {
14−
1514 return (
1615 <div className={'flex items-center'} key={ `history-${idx}` }>
17−
18−
19−
20−
2116 <Button
2217 prop-type={'link'}
2318 prop-size={'sm'}
@@ -31,8 +26,6 @@ const Crumbs = (props) => {
3126 ? <div />
3227 : <Chevron className={'h-4 mh-2'} />
3328 }
34−
35−
3629 </div>
3730 )
3831 })
@@ -41,21 +34,21 @@ const Crumbs = (props) => {
4134}
4235
4336const Header = (props) => {
44− if (props.showCrumbs) {
45− return (
46− <div className={'flex items-center h-10'}>
47− <Crumbs
48− routeCrumbs={ props.routeCrumbs }
49− skipRoute={ props.skipRoute }
50− networkType={ props.networkType }
51− wallet={ props.wallet }
52− pointCursor={ props.pointCursor }
53− />
54− </div>
55− )
56− } else {
57− return <h2 className="mt-9 clickable" onClick={() => props.skipRoute(1)}>Bridge</h2>
58− }
37+ const crumbs = (
38+ <div className={'flex items-center h-10'}>
39+ <Crumbs
40+ routeCrumbs={ props.routeCrumbs }
41+ skipRoute={ props.skipRoute }
42+ networkType={ props.networkType }
43+ wallet={ props.wallet }
44+ pointCursor={ props.pointCursor }
45+ />
46+ </div>
47+ )
48+
49+ const noCrumbs = <h2 className="mt-9 clickable" onClick={() => props.skipRoute(1)}>Bridge</h2>
50+
51+ return props.showCrumbs ? crumbs : noCrumbs
5952}
6053
6154export default Header
src/bridge/components/Passport.js+13−18
@@ -50,9 +50,7 @@ class Passport extends React.Component {
5050
5151 getCurrentDate() {
5252 let date = new Date()
53− var fil = function(n) {
54−     return n >= 10 ? n : "0" + n;
55−   };
53+ const fil = n => n >= 10 ? n : `0${n}`
5654 let fmtDate = `${date.getUTCFullYear()}.` +
5755   `${(date.getUTCMonth() + 1)}.` +
5856   `${fil(date.getUTCDate())}`
@@ -104,14 +102,15 @@ class Passport extends React.Component {
104102 let stateElems = walletStates.map(state => {
105103 if (state === WALLET_STATES.DOWNLOADED) return null
106104
107− let lastIndex = walletStates.indexOf(state) === walletStates.length - 1
105+ const lastIndex = walletStates.indexOf(state) === walletStates.length - 1
106+ const checkmark = lastIndex
107+ ? <div className="text-700 text-sm lh-6 green-dark">✓</div>
108+ : null
108109
109110 return (
110111 <div className="flex justify-between">
111112 <div className="text-mono text-sm lh-6 green-dark">{state}</div>
112− {(!lastIndex) &&
113− <div className="text-700 text-sm lh-6 green-dark">✓</div>
114− }
113+ { checkmark }
115114 </div>
116115 )
117116 })
@@ -124,8 +123,6 @@ class Passport extends React.Component {
124123 }
125124
126125 render() {
127− let sigil = null
128−
129126 let patp = this.props.point.matchWith({
130127 Just: p => ob.patp(p.value),
131128 Nothing: () => ''
@@ -141,15 +138,13 @@ class Passport extends React.Component {
141138 Nothing: () => null
142139 })
143140
144− if (patp !== '') {
145− sigil = pour({
146− patp: patp,
147− renderer: ReactSVGComponents,
148− size: 128
149− })
150− } else {
151− sigil = <div className="passport-sigil-blank"></div>
152− }
141+ const sigil = patp !== ''
142+ ? pour({
143+ patp: patp,
144+ renderer: ReactSVGComponents,
145+ size: 128
146+ })
147+ : <div className="passport-sigil-blank"></div>
153148
154149 let currentDate = this.getCurrentDate()
155150 let walletStates = this.getWalletStates()
src/bridge/lib/invite.js+2−1
@@ -86,6 +86,7 @@ const TRANSACTION_STATES = {
8686 },
8787}
8888
89+//TODO should be moved to lib/walletgen
8990async function generateWallet(point) {
9091 const makeTicket = point => {
9192
@@ -140,7 +141,7 @@ async function generateWallet(point) {
140141 return wallet;
141142}
142143
143−//TODO pulled from walletgen/views/Generate and Download, put into lib
144+//TODO should be moved to lib/walletgen
144145async function downloadWallet(paper) {
145146 return new Promise((resolve, reject) => {
146147 const zip = new JSZip();
src/bridge/views/InviteTicket.js+11−3
@@ -89,7 +89,9 @@ class InviteTicket extends React.Component {
8989 uhdw.meta.passphrase
9090 ).matchWith({
9191 Just: w => w.value,
92− Nothing: () => null
92+ Nothing: () => {
93+ throw BRIDGE_ERROR.MISSING_WALLET
94+ }
9395 });
9496
9597 const addr = addressFromSecp256k1Public(inviteWallet.publicKey);
@@ -146,9 +148,15 @@ class InviteTicket extends React.Component {
146148 let handler = isLogin ? this.handleInviteTicketInput : this.handleVerifyTicketInput
147149 let label = isLogin ? 'Activation code' : 'ticket'
148150
151+ // if realWallet is Just, then VerifyTicketInput appropriate contents; if Nothing, remain Nothing
152+ const Verified = this.state.realWallet.map(realWallet =>
153+ VerifyTicketInput(realWallet.ticket)
154+ )
155+
156+ // Verified.getOrElse(TicketInput) falls back to TicketInput if Verified is Nothing
149157 const TicketElem =
150− isVerify && !Nothing.hasInstance(this.state.realWallet)
151− ? VerifyTicketInput(this.state.realWallet.value.ticket)
158+ isVerify
159+ ? Verified.getOrElse(TicketInput)
152160 : TicketInput
153161
154162 return (