on master help sign in
Refactor urbitWallet->wallet logic into /lib/wallet.js
commita08dec934a393b14d69144c67c42f0a8bb4136ac authorFang <git@fang.io> dateFri 5 Apr 2019, 01:51 (8 years ago) parent2df360e
5 files changed+39−37
src/bridge/Bridge.js+12−2 src/bridge/lib/wallet.js+18 src/bridge/views/InviteLogin.js+3−11 src/bridge/views/Shards.js+3−12 src/bridge/views/Ticket.js+3−12
src/bridge/Bridge.js+12−2
@@ -12,7 +12,7 @@ import { Container, Row, Col } from './components/Base'
1212
1313import { ROUTE_NAMES, router } from './lib/router'
1414import { NETWORK_NAMES } from './lib/network'
15−import { WALLET_NAMES, DEFAULT_HD_PATH } from './lib/wallet'
15+import { WALLET_NAMES, DEFAULT_HD_PATH, walletFromMnemonic } from './lib/wallet'
1616import { BRIDGE_ERROR } from './lib/error'
1717
1818const initWeb3 = (networkType) => {
@@ -212,8 +212,18 @@ class Bridge extends React.Component {
212212 this.setState({ walletHdPath })
213213 }
214214
215+ // also sets wallet to ownership address
215216 setUrbitWallet(urbitWallet) {
216− this.setState({ urbitWallet })
217+ let wallet = this.state.wallet;
218+ if (Just.hasInstance(urbitWallet)) {
219+ const mnemonic = urbitWallet.value.ownership.seed;
220+ wallet = walletFromMnemonic(
221+ mnemonic,
222+ DEFAULT_HD_PATH,
223+ urbitWallet.value.meta.passphrase
224+ );
225+ }
226+ this.setState({ urbitWallet, wallet })
217227 }
218228
219229 setAuthMnemonic(authMnemonic) {
src/bridge/lib/wallet.js+18
@@ -4,6 +4,8 @@ import keccak from 'keccak'
44import * as lodash from 'lodash'
55import Maybe from 'folktale/maybe'
66import * as secp256k1 from 'secp256k1'
7+import * as ob from 'urbit-ob'
8+import * as kg from '../../../node_modules/urbit-key-generation/dist/index'
79
810const DEFAULT_HD_PATH = "m/44'/60'/0'/0/0"
911
@@ -86,6 +88,21 @@ const toChecksumAddress = (address) => {
8688const eqAddr = (addr0, addr1) =>
8789 toChecksumAddress(addr0) === toChecksumAddress(addr1)
8890
91+const urbitWalletFromTicket = async (ticket, point, passphrase) => {
92+ if (typeof point === 'string') {
93+ point = ob.patp2dec(point);
94+ }
95+ let uhdw = await kg.generateWallet({
96+ ticket: ticket,
97+ ship: point,
98+ passphrase: passphrase
99+ });
100+ //TODO remove after keygen-js#61 gets released
101+ uhdw.meta.ship = point;
102+ uhdw.meta.passphrase = passphrase;
103+ return uhdw;
104+}
105+
89106const walletFromMnemonic = (mnemonic, hdpath, passphrase) => {
90107 const seed =
91108 bip39.validateMnemonic(mnemonic)
@@ -117,6 +134,7 @@ export {
117134 toChecksumAddress,
118135 addressFromSecp256k1Public,
119136 eqAddr,
137+ urbitWalletFromTicket,
120138 walletFromMnemonic,
121139 addHexPrefix,
122140 EthereumWallet
src/bridge/views/InviteLogin.js+3−11
@@ -7,7 +7,7 @@ import * as kg from '../../../node_modules/urbit-key-generation/dist/index'
77import * as ob from 'urbit-ob'
88
99import { ROUTE_NAMES } from '../lib/router'
10−import { DEFAULT_HD_PATH, walletFromMnemonic } from '../lib/wallet'
10+import { DEFAULT_HD_PATH, urbitWalletFromTicket } from '../lib/wallet'
1111
1212const placeholder = (len) => {
1313 let bytes = window.crypto.getRandomValues(new Uint8Array(len))
@@ -40,20 +40,12 @@ class InviteLogin extends React.Component {
4040 }
4141
4242 async walletFromTicket(ticket, pointName) {
43− const { setWallet, setUrbitWallet } = this.props
44−
4543 this.setState({
4644 isUnlocking: true
4745 });
4846
49− const urbitWallet = await kg.generateWallet({
50− ticket: ticket,
51− ship: ob.patp2dec('~zod') //NOTE invite wallet
52− })
53− const mnemonic = urbitWallet.ownership.seed
54− const wallet = walletFromMnemonic(mnemonic, DEFAULT_HD_PATH)
55− setWallet(wallet)
56− setUrbitWallet(Just(urbitWallet))
47+ const uhdw = await urbitWalletFromTicket(ticket, '~zod');
48+ this.props.setUrbitWallet(Just(uhdw));
5749
5850 this.setState({
5951 isUnlocking: false
src/bridge/views/Shards.js+3−12
@@ -14,7 +14,7 @@ import * as kg from '../../../node_modules/urbit-key-generation/dist/index'
1414import * as ob from 'urbit-ob'
1515
1616import { ROUTE_NAMES } from '../lib/router'
17−import { DEFAULT_HD_PATH, walletFromMnemonic } from '../lib/wallet'
17+import { DEFAULT_HD_PATH, urbitWalletFromTicket } from '../lib/wallet'
1818
1919const placeholder = (len) => {
2020 let bytes = window.crypto.getRandomValues(new Uint8Array(len))
@@ -73,8 +73,6 @@ class Shards extends React.Component {
7373 }
7474
7575 async walletFromShards(shard1, shard2, shard3, pointName, passphrase) {
76− const { setWallet, setUrbitWallet } = this.props
77−
7876 const s1 = shard1 === '' ? undefined : shard1
7977 const s2 = shard2 === '' ? undefined : shard2
8078 const s3 = shard3 === '' ? undefined : shard3
@@ -87,15 +85,8 @@ class Shards extends React.Component {
8785 }
8886
8987 if (ticket !== undefined) {
90− const urbitWallet = await kg.generateWallet({
91− ticket: ticket,
92− ship: ob.patp2dec(pointName),
93− passphrase: passphrase
94− })
95− const mnemonic = urbitWallet.ownership.seed
96− const wallet = walletFromMnemonic(mnemonic, DEFAULT_HD_PATH, passphrase)
97− setWallet(wallet)
98− setUrbitWallet(Just(urbitWallet))
88+ const uhdw = await urbitWalletFromTicket(ticket, pointName, passphrase);
89+ this.props.setUrbitWallet(Just(uhdw));
9990 }
10091 }
10192
src/bridge/views/Ticket.js+3−12
@@ -14,7 +14,7 @@ import * as kg from '../../../node_modules/urbit-key-generation/dist/index'
1414import * as ob from 'urbit-ob'
1515
1616import { ROUTE_NAMES } from '../lib/router'
17−import { DEFAULT_HD_PATH, walletFromMnemonic } from '../lib/wallet'
17+import { DEFAULT_HD_PATH, urbitWalletFromTicket } from '../lib/wallet'
1818
1919const placeholder = (len) => {
2020 let bytes = window.crypto.getRandomValues(new Uint8Array(len))
@@ -60,21 +60,12 @@ class Ticket extends React.Component {
6060 }
6161
6262 async walletFromTicket(ticket, pointName, passphrase) {
63− const { setWallet, setUrbitWallet } = this.props
64−
6563 this.setState({
6664 isUnlocking: true
6765 });
6866
69− const urbitWallet = await kg.generateWallet({
70− ticket: ticket,
71− ship: ob.patp2dec(pointName),
72− passphrase: passphrase
73− })
74− const mnemonic = urbitWallet.ownership.seed
75− const wallet = walletFromMnemonic(mnemonic, DEFAULT_HD_PATH, passphrase)
76− setWallet(wallet)
77− setUrbitWallet(Just(urbitWallet))
67+ const uhdw = await urbitWalletFromTicket(ticket, pointName, passphrase);
68+ this.props.setUrbitWallet(Just(uhdw));
7869
7970 this.setState({
8071 isUnlocking: false