Skip to content

Commit 822fd3e

Browse files
committed
Updates to provider engine
1 parent 2423725 commit 822fd3e

File tree

5 files changed

+49
-34
lines changed

5 files changed

+49
-34
lines changed

rollup.config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ export default {
5858
'@toruslabs/torus-embed',
5959
'lodash.debounce',
6060
'regenerator-runtime/runtime',
61-
'web3-provider-engine',
6261
'trezor-connect',
6362
'ethereumjs-tx',
6463
'@ledgerhq/hw-transport-u2f',
@@ -67,7 +66,10 @@ export default {
6766
'assert',
6867
'buffer',
6968
'stream',
69+
'web3-provider-engine',
7070
'web3-provider-engine/subproviders/hooked-wallet',
71-
'web3-provider-engine/subproviders/rpc'
71+
'web3-provider-engine/subproviders/rpc',
72+
'web3-provider-engine/subproviders/subscriptions',
73+
'web3-provider-engine/subproviders/filters'
7274
]
7375
}

src/@types/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ declare module '@walletconnect/web3-provider'
44
declare module 'web3-provider-engine'
55
declare module 'web3-provider-engine/subproviders/rpc'
66
declare module 'web3-provider-engine/subproviders/hooked-wallet'
7+
declare module 'web3-provider-engine/subproviders/subscriptions'
8+
declare module 'web3-provider-engine/subproviders/filters'
79
declare module 'trezor-connect'
810
declare module 'ethereumjs-tx'
911
declare module '@ledgerhq/hw-app-eth'

src/modules/select/wallets/ledger.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ import {
66
} from '../../../interfaces'
77
import ledgerIcon from '../wallet-icons/icon-ledger'
88

9-
import Web3ProviderEngine from 'web3-provider-engine'
10-
import RpcSource from 'web3-provider-engine/subproviders/rpc'
11-
import HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet'
9+
import createProvider from './providerEngine'
10+
1211
import TransportU2F from '@ledgerhq/hw-transport-u2f'
1312
import Eth from '@ledgerhq/hw-app-eth'
1413
import { Transaction } from 'ethereumjs-tx'
@@ -81,7 +80,7 @@ async function ledgerProvider(options: {
8180

8281
let enabled: boolean = false
8382

84-
const ledgerSubProvider = new HookedWalletSubprovider({
83+
const provider = createProvider({
8584
getAccounts: (callback: any) => {
8685
getAccounts()
8786
.then((res: Array<any>) => callback(null, res))
@@ -91,26 +90,19 @@ async function ledgerProvider(options: {
9190
signTransaction(transactionData)
9291
.then((res: string) => callback(null, res))
9392
.catch(err => callback(err, null))
94-
}
95-
})
96-
97-
const rpcSubProvider = new RpcSource({
98-
rpcUrl: rpcUrl.includes('http') ? rpcUrl : `https://${rpcUrl}`
93+
},
94+
rpcUrl
9995
})
100-
const provider = new Web3ProviderEngine()
10196

102-
provider.on('error', (err: any) => {})
97+
provider.on('error', (err: any) => console.log('provider error', err))
10398

10499
provider.getPrimaryAddress = getPrimaryAddress
105100
provider.getAllAccountsAndBalances = getAllAccountsAndBalances
106101
provider.enable = enable
107102
provider.on = on
108103
provider.setPrimaryAccount = setPrimaryAccount
109104
provider.getBalance = getBalance
110-
111-
provider.addProvider(ledgerSubProvider)
112-
provider.addProvider(rpcSubProvider)
113-
provider.start()
105+
provider.send = provider.sendAsync
114106

115107
function enable() {
116108
enabled = true
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import Web3ProviderEngine from 'web3-provider-engine'
2+
import RpcSource from 'web3-provider-engine/subproviders/rpc'
3+
import HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet'
4+
import SubscriptionSubprovider from 'web3-provider-engine/subproviders/subscriptions'
5+
import FilterSubprovider from 'web3-provider-engine/subproviders/filters'
6+
7+
function createProvider(config: any) {
8+
const { getAccounts, signTransaction, rpcUrl } = config
9+
10+
const idMgmt = new HookedWalletSubprovider({ getAccounts, signTransaction })
11+
12+
const rpcSubProvider = new RpcSource({
13+
rpcUrl: rpcUrl.includes('http') ? rpcUrl : `https://${rpcUrl}`
14+
})
15+
16+
const provider = new Web3ProviderEngine()
17+
18+
provider.addProvider(new SubscriptionSubprovider())
19+
provider.addProvider(new FilterSubprovider())
20+
provider.addProvider(idMgmt)
21+
provider.addProvider(rpcSubProvider)
22+
provider.start()
23+
24+
return provider
25+
}
26+
27+
export default createProvider

src/modules/select/wallets/trezor.ts

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ import {
66
} from '../../../interfaces'
77
import trezorIcon from '../wallet-icons/icon-trezor'
88

9-
import Web3ProviderEngine from 'web3-provider-engine'
10-
import RpcSource from 'web3-provider-engine/subproviders/rpc'
11-
import HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet'
9+
import createProvider from './providerEngine'
10+
1211
import * as TrezorConnectLibrary from 'trezor-connect'
13-
import EthereumTx from 'ethereumjs-tx'
12+
import * as EthereumTx from 'ethereumjs-tx'
1413

1514
const { default: TrezorConnect, DEVICE_EVENT, DEVICE } = TrezorConnectLibrary
1615

@@ -105,7 +104,7 @@ async function trezorProvider(options: {
105104
}
106105
})
107106

108-
const trezorSubProvider = new HookedWalletSubprovider({
107+
const provider = createProvider({
109108
getAccounts: (callback: any) => {
110109
getAccounts()
111110
.then((res: Array<string>) => callback(null, res))
@@ -115,26 +114,19 @@ async function trezorProvider(options: {
115114
signTransaction(transactionData)
116115
.then((res: string) => callback(null, res))
117116
.catch(err => callback(err, null))
118-
}
119-
})
120-
121-
const rpcSubProvider = new RpcSource({
122-
rpcUrl: rpcUrl.includes('http') ? rpcUrl : `https://${rpcUrl}`
117+
},
118+
rpcUrl
123119
})
124-
const provider = new Web3ProviderEngine()
125120

126-
provider.on('error', (err: any) => {})
121+
provider.on('error', (err: any) => console.log('provider error', err))
127122

128123
provider.getPrimaryAddress = getPrimaryAddress
129124
provider.getAllAccountsAndBalances = getAllAccountsAndBalances
130125
provider.enable = enable
131126
provider.on = on
132127
provider.setPrimaryAccount = setPrimaryAccount
133128
provider.getBalance = getBalance
134-
135-
provider.addProvider(trezorSubProvider)
136-
provider.addProvider(rpcSubProvider)
137-
provider.start()
129+
provider.send = provider.sendAsync
138130

139131
function enable() {
140132
enabled = true
@@ -284,7 +276,7 @@ async function trezorProvider(options: {
284276
async function signTransaction(transactionData: any) {
285277
const path = [...addressToPath.values()][0]
286278

287-
const transaction = new EthereumTx(transactionData, {
279+
const transaction = new EthereumTx.Transaction(transactionData, {
288280
chain: networkName(networkId)
289281
})
290282
const trezorResult = await trezorSignTransaction(path, transactionData)

0 commit comments

Comments
 (0)