on master help sign in
- Delete InviteLogin and InviteVerify views
500eab1Chris Johnson
src/bridge/Bridge.js+1−1
@@ -267,7 +267,7 @@ class Bridge extends React.Component {
267 let colClass
267 let colClass
268 let colStyle
268 let colStyle
269
269
270− if (routeCrumbs.contains(ROUTE_NAMES.INVITE_LOGIN)) {
270+ if (routeCrumbs.contains(ROUTE_NAMES.INVITE_TICKET)) {
271 colClass = 'col-md-12'
271 colClass = 'col-md-12'
272 } else {
272 } else {
273 colClass = 'col-md-offset-1 col-md-10'
273 colClass = 'col-md-offset-1 col-md-10'
src/bridge/components/Header.js+1−1
@@ -41,7 +41,7 @@ const Crumbs = (props) => {
41}
41}
42
42
43const Header = (props) => {
43const Header = (props) => {
44− let showCrumbs = !props.routeCrumbs.contains(ROUTE_NAMES.INVITE_LOGIN)
44+ let showCrumbs = !props.routeCrumbs.contains(ROUTE_NAMES.INVITE_TICKET)
45
45
46 if (showCrumbs) {
46 if (showCrumbs) {
47 return (
47 return (
src/bridge/lib/router.js+4−16
@@ -4,9 +4,7 @@ import React from 'react';
4
4
5import Landing from '../views/Landing'
5import Landing from '../views/Landing'
6
6
7−import InviteLogin from '../views/InviteLogin'
7+import InviteTicket from '../views/InviteTicket'
8−import InviteWallet from '../views/InviteWallet'
9−import InviteVerify from '../views/InviteVerify.js'
10import InviteTransactions from '../views/InviteTransactions.js'
8import InviteTransactions from '../views/InviteTransactions.js'
11
9
12import AcceptTransfer from '../views/AcceptTransfer'
10import AcceptTransfer from '../views/AcceptTransfer'
@@ -42,9 +40,7 @@ import { BRIDGE_ERROR } from './error'
42const ROUTE_NAMES = {
40const ROUTE_NAMES = {
43 DEFAULT: Symbol('DEFAULT'),
41 DEFAULT: Symbol('DEFAULT'),
44 //
42 //
45− INVITE_LOGIN: Symbol('INVITE_LOGIN'),
43+ INVITE_TICKET: Symbol('INVITE_TICKET'),
46− INVITE_WALLET: Symbol('INVITE_WALLET'),
47− INVITE_VERIFY: Symbol('INVITE_VERIFY'),
48 INVITE_TRANSACTIONS: Symbol('INVITE_TRANSACTIONS'),
44 INVITE_TRANSACTIONS: Symbol('INVITE_TRANSACTIONS'),
49 //
45 //
50 ACCEPT_TRANSFER: Symbol('ACCEPT_TRANSFER'),
46 ACCEPT_TRANSFER: Symbol('ACCEPT_TRANSFER'),
@@ -77,9 +73,7 @@ const createRoutes = () => {
77 const routes = {}
73 const routes = {}
78 routes[ROUTE_NAMES.DEFAULT] = Landing
74 routes[ROUTE_NAMES.DEFAULT] = Landing
79 //
75 //
80− routes[ROUTE_NAMES.INVITE_LOGIN] = InviteLogin
76+ routes[ROUTE_NAMES.INVITE_TICKET] = InviteTicket
81− routes[ROUTE_NAMES.INVITE_WALLET] = InviteWallet
82− routes[ROUTE_NAMES.INVITE_VERIFY] = InviteVerify
83 routes[ROUTE_NAMES.INVITE_TRANSACTIONS] = InviteTransactions
77 routes[ROUTE_NAMES.INVITE_TRANSACTIONS] = InviteTransactions
84 //
78 //
85 routes[ROUTE_NAMES.ACCEPT_TRANSFER] = AcceptTransfer
79 routes[ROUTE_NAMES.ACCEPT_TRANSFER] = AcceptTransfer
@@ -117,15 +111,9 @@ const renderRoute = (props, route) => {
117 route === ROUTE_NAMES.LANDING
111 route === ROUTE_NAMES.LANDING
118 ? 'Bridge'
112 ? 'Bridge'
119
113
120− : route === ROUTE_NAMES.INVITE_LOGIN
114+ : route === ROUTE_NAMES.INVITE_TICKET
121 ? 'Invite code'
115 ? 'Invite code'
122
116
123− : route === ROUTE_NAMES.INVITE_WALLET
124− ? 'Claim invite'
125−
126− : route === ROUTE_NAMES.INVITE_VERIFY
127− ? 'Verify new wallet'
128−
129 : route === ROUTE_NAMES.INVITE_TRANSACTIONS
117 : route === ROUTE_NAMES.INVITE_TRANSACTIONS
130 ? 'Setting up new wallet'
118 ? 'Setting up new wallet'
131
119
src/bridge/views/InviteLogin.js → src/bridge/views/InviteTicket.jsrenamed+4−2
@@ -22,7 +22,7 @@ const placeholder = (len) => {
22 return ob.hex2patq(hex)
22 return ob.hex2patq(hex)
23}
23}
24
24
25−class InviteLogin extends React.Component {
25+class InviteTicket extends React.Component {
26
26
27 constructor(props) {
27 constructor(props) {
28 super(props)
28 super(props)
@@ -239,6 +239,8 @@ class InviteLogin extends React.Component {
239 getStageDisplay() {
239 getStageDisplay() {
240 const { stage } = this.state
240 const { stage } = this.state
241
241
242+ if (stage === INVITE_STAGES.INVITE_LOGIN) return null
243+
242 return (
244 return (
243 <div className="mt-6 mb-8">
245 <div className="mt-6 mb-8">
244 <span className={`fs-35 mr-3 ${stage !== INVITE_STAGES.INVITE_WALLET && 'gray-20'}`}>1 Passport</span>
246 <span className={`fs-35 mr-3 ${stage !== INVITE_STAGES.INVITE_WALLET && 'gray-20'}`}>1 Passport</span>
@@ -289,4 +291,4 @@ class InviteLogin extends React.Component {
289 }
291 }
290}
292}
291
293
292−export default InviteLogin
294+export default InviteTicket
src/bridge/views/InviteTransactions.js+2−2
@@ -40,7 +40,7 @@ const PROGRESS_STATES = {
40 DONE: 'Done'
40 DONE: 'Done'
41}
41}
42
42
43−class InviteVerify extends React.Component {
43+class InviteTransactions extends React.Component {
44
44
45 constructor(props) {
45 constructor(props) {
46 super(props)
46 super(props)
@@ -343,4 +343,4 @@ class InviteVerify extends React.Component {
343 }
343 }
344}
344}
345
345
346−export default InviteVerify
346+export default InviteTransactions
src/bridge/views/InviteVerify.jsdeleted−115
@@ -1,115 +0,0 @@
1−import { Just, Nothing } from 'folktale/maybe'
2−import React from 'react'
3−import { pour } from 'sigil-js'
4−import * as ob from 'urbit-ob'
5−import * as azimuth from 'azimuth-js'
6−
7−import { ROUTE_NAMES } from '../lib/router'
8−
9−import { InnerLabel, TicketInput } from '../components/Base'
10−import ReactSVGComponents from '../components/ReactSVGComponents'
11−import KeysAndMetadata from './Point/KeysAndMetadata'
12−import Actions from './Point/Actions'
13−import { BRIDGE_ERROR } from '../lib/error'
14−import { Row, Col, Warning, Button, H1, H3 } from '../components/Base'
15−
16−//TODO from Ticket.js, move to lib
17−const placeholder = (len) => {
18− let bytes = window.crypto.getRandomValues(new Uint8Array(len))
19− let hex = bytes.reduce((acc, byt) =>
20− acc + byt.toString(16).padStart(2, '0'),
21− ''
22− )
23− return ob.hex2patq(hex)
24−}
25−
26−class InviteVerify extends React.Component {
27−
28− constructor(props) {
29− super(props)
30−
31− this.state = {
32− point: this.props.routeData.point,
33− realTicket: this.props.routeData.ticket
34− }
35−
36− this.ticketPlaceholder = placeholder(8);
37− this.handleTicketInput = this.handleTicketInput.bind(this);
38− this.proceed = this.proceed.bind(this);
39− }
40−
41− componentDidMount() {
42− //
43− }
44−
45− componentDidUpdate(prevProps) {
46− //
47− }
48−
49− handleTicketInput(ticket) {
50− this.setState({ ticket })
51− }
52−
53− proceed() {
54− this.props.pushRoute(ROUTE_NAMES.INVITE_TRANSACTIONS, {
55− ticket: this.state.realTicket,
56− point: this.state.point
57− });
58− }
59−
60− render() {
61−
62− const { point } = this.state;
63−
64− const name = ob.patp(point);
65− const sigil = pour({
66− patp: name,
67− renderer: ReactSVGComponents,
68− size: 256
69− });
70− let pointOverview = (
71− //TODO Passport display component
72− <>
73− <div className={'mt-12 pt-6'}>
74− { sigil }
75− </div>
76− <H3><code>{ name }</code></H3>
77− </>
78− );
79−
80− return (
81− <Row>
82− <Col>
83−
84− { pointOverview }
85−
86− <p>{`Please input the master ticket for ${point} that you downloaded in the previous step.`}</p>
87−
88− <TicketInput
89− className='mono mt-8'
90− prop-size='lg'
91− prop-format='innerLabel'
92− type='password'
93− name='ticket'
94− placeholder={ `e.g. ${this.ticketPlaceholder}` }
95− value={ this.state.ticket }
96− onChange={ this.handleTicketInput }>
97− <InnerLabel>{ 'Ticket' }</InnerLabel>
98− </TicketInput>
99−
100− <Button
101− className={'mt-4'}
102− prop-size={'xl wide'}
103− disabled={(this.state.ticket !== this.state.realTicket)}
104− onClick={this.proceed}
105− >
106− { 'Continue →' }
107− </Button>
108−
109− </Col>
110− </Row>
111− )
112− }
113−}
114−
115−export default InviteVerify
src/bridge/views/InviteWallet.jsdeleted−188
@@ -1,188 +0,0 @@
1−import { Just, Nothing } from 'folktale/maybe'
2−import React from 'react'
3−import { pour } from 'sigil-js'
4−import * as ob from 'urbit-ob'
5−import * as azimuth from 'azimuth-js'
6−
7−import { addressFromSecp256k1Public, EthereumWallet } from '../lib/wallet'
8−import { ROUTE_NAMES } from '../lib/router'
9−
10−import PointList from '../components/PointList'
11−import ReactSVGComponents from '../components/ReactSVGComponents'
12−import KeysAndMetadata from './Point/KeysAndMetadata'
13−import Actions from './Point/Actions'
14−import { BRIDGE_ERROR } from '../lib/error'
15−import { Row, Col, Warning, Button, H1, H3 } from '../components/Base'
16−
17−import { generateWallet, downloadWallet } from '../lib/invite'
18−
19−// for wallet generation
20−import PaperCollateralRenderer from 'PaperCollateralRenderer'
21−
22−class InviteWallet extends React.Component {
23−
24− constructor(props) {
25− super(props)
26−
27− this.state = {
28− loaded: false,
29− point: Nothing(),
30− wallet: Nothing(),
31− paper: Nothing(),
32− downloaded: false
33− }
34−
35− this.download = this.download.bind(this)
36− this.proceed = this.proceed.bind(this)
37− }
38−
39− async componentDidMount() {
40− const { web3, wallet, contracts, setPointCursor } = this.props
41−
42− web3.chain(_ =>
43− contracts.chain(ctrcs =>
44− wallet.chain(async wal => {
45− const addr = addressFromSecp256k1Public(wal.publicKey);
46− console.log('fetching incoming for', addr)
47− const incoming = await azimuth.azimuth.getTransferringFor(ctrcs, addr)
48− console.log('incoming', incoming)
49−
50− let point = Nothing();
51− let wallet = Nothing();
52−
53− if (incoming.length > 0) {
54− let pointNum = parseInt(incoming[0]);
55− point = Just(pointNum);
56− wallet = await generateWallet(pointNum);
57− if (incoming.length > 1) {
58− //TODO notify user "...and others / ticket reusable"
59− }
60− }
61− this.setState({loaded: true, point: point, wallet: Just(wallet)})
62− })))
63− }
64−
65− componentDidUpdate(prevProps) {
66− //
67− }
68−
69− async download() {
70− let result = await downloadWallet(this.state.paper)
71− this.setState({
72− downloaded: true
73− })
74− }
75−
76− proceed() {
77− this.props.pushRoute(ROUTE_NAMES.INVITE_VERIFY, {
78− ticket: this.state.wallet.value.ticket,
79− point: parseInt(this.state.point.value)
80− });
81− }
82−
83− render() {
84− const { loaded, point, wallet, paper, downloaded } = this.state;
85−
86− let loading;
87− if (!loaded) {
88− loading = ( <div>{ 'Loading...' }</div> );
89− }
90−
91− let balanceWarning;
92− if (loaded && Nothing.hasInstance(point)) {
93− balanceWarning = (
94− <Warning>
95− <h3 className={'mb-2'}>{'Warning'}</h3>
96− {
97− 'This invite has no claimable balance.'
98− }
99− </Warning>
100− );
101− }
102−
103− // let pointOverview;
104− // if (loaded && Just.hasInstance(point)) {
105− // const name = ob.patp(point.value);
106− // const sigil = pour({
107− // patp: name,
108− // renderer: ReactSVGComponents,
109− // size: 256
110− // });
111− // pointOverview = (
112− // //TODO Passport display component
113− // <>
114− // <div className={'mt-12 pt-6'}>
115− // { sigil }
116− // </div>
117− // <H3><code>{ name }</code></H3>
118− // </>
119− // );
120− // }
121−
122− let downloadButtonContents = 'Download wallet';
123− if ( Nothing.hasInstance(this.state.wallet) ||
124− Nothing.hasInstance(this.state.paper) ) {
125− downloadButtonContents = (
126− <>
127− <span className="btn-spinner"></span>
128− {'Generating wallet...'}
129− </>
130− );
131− }
132−
133− let downloadButton;
134− let nextButton;
135− if (loaded) {
136− downloadButton = (
137− <Button
138− className={'mt-8'}
139− prop-size={'lg wide'}
140− disabled={( Nothing.hasInstance(this.state.wallet) ||
141− Nothing.hasInstance(this.state.paper) )}
142− onClick={this.download}
143− >
144− <span className="relative">
145− { downloadButtonContents }
146− </span>
147− </Button>
148− );
149−
150− nextButton = (
151− <Button
152− className={'mt-8'}
153− prop-size={'lg wide'}
154− disabled={!this.state.downloaded}
155− onClick={this.proceed}
156− >
157− {'Proceed'}
158− </Button>
159− );
160− }
161−
162− let paperRenderer;
163− if ( Just.hasInstance(this.state.wallet) &&
164− Nothing.hasInstance(this.state.paper) ) {
165− console.log('rendering for', point.value)
166− paperRenderer = (
167− <PaperCollateralRenderer
168− wallet={{[point.value]: wallet.value}}
169− className={'extremely-hidden'}
170− callback={data => {
171− console.log('got paper', data);
172− this.setState({isRendering: false, paper: data})
173− }}
174− mode={'REGISTRATION'} />
175− );
176− }
177−
178− return (
179− <Row>
180− <Col>
181− { paperRenderer }
182− </Col>
183− </Row>
184− )
185− }
186−}
187−
188−export default InviteWallet
src/bridge/views/Landing.js+1−1
@@ -22,7 +22,7 @@ const Landing = (props) =>
22 prop-type='link'
22 prop-type='link'
23 prop-size='lg'
23 prop-size='lg'
24 className={'mb-4 mt-8'}
24 className={'mb-4 mt-8'}
25− onClick={ () => props.pushRoute(ROUTE_NAMES.INVITE_LOGIN) }
25+ onClick={ () => props.pushRoute(ROUTE_NAMES.INVITE_TICKET) }
26 >
26 >
27 { 'Claim an invite →' }
27 { 'Claim an invite →' }
28 </Button>
28 </Button>