Skip to content

Commit ac8ecf0

Browse files
authored
Merge pull request #432 from blocknative/fix/ledger-u2f-revert
Fix: Ledger U2F Revert
2 parents 9fb6169 + 02bb8d5 commit ac8ecf0

File tree

5 files changed

+20
-103
lines changed

5 files changed

+20
-103
lines changed

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
"dependencies": {
4848
"@ledgerhq/hw-app-eth": "^5.21.0",
4949
"@ledgerhq/hw-transport-u2f": "^5.21.0",
50-
"@ledgerhq/hw-transport-webusb": "^5.22.0",
5150
"@portis/web3": "^2.0.0-beta.57",
5251
"@toruslabs/torus-embed": "^1.8.2",
5352
"@unilogin/provider": "^0.6.1",

rollup.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ export default {
7272
'ethereumjs-util',
7373
'hdkey',
7474
'@ledgerhq/hw-transport-u2f',
75-
'@ledgerhq/hw-transport-webusb',
7675
'@ledgerhq/hw-app-eth',
7776
'util',
7877
'assert',

src/@types/index.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ declare module 'ethereumjs-util'
1212
declare module 'hdkey'
1313
declare module '@ledgerhq/hw-app-eth'
1414
declare module '@ledgerhq/hw-transport-u2f'
15-
declare module '@ledgerhq/hw-transport-webusb'
1615

1716
declare module '*.png'
1817
declare module '*.svg'

src/modules/select/wallets/ledger.ts

Lines changed: 19 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
import {
2-
LedgerOptions,
3-
WalletModule,
4-
Helpers,
5-
Browser,
6-
OS
7-
} from '../../../interfaces'
1+
import { LedgerOptions, WalletModule, Helpers } from '../../../interfaces'
82

93
import ledgerIcon from '../wallet-icons/icon-ledger'
104

@@ -27,17 +21,15 @@ function ledger(options: LedgerOptions & { networkId: number }): WalletModule {
2721
svg: svg || ledgerIcon,
2822
iconSrc,
2923
wallet: async (helpers: Helpers) => {
30-
const { BigNumber, networkName, resetWalletState, browser, os } = helpers
24+
const { BigNumber, networkName, resetWalletState } = helpers
3125

3226
const provider = await ledgerProvider({
3327
rpcUrl,
3428
networkId,
35-
CustomLedgerTransport: LedgerTransport,
29+
LedgerTransport,
3630
BigNumber,
3731
networkName,
38-
resetWalletState,
39-
browser,
40-
os
32+
resetWalletState
4133
})
4234

4335
return {
@@ -72,18 +64,17 @@ function ledger(options: LedgerOptions & { networkId: number }): WalletModule {
7264
async function ledgerProvider(options: {
7365
networkId: number
7466
rpcUrl: string
75-
CustomLedgerTransport: any
67+
LedgerTransport: any
7668
BigNumber: any
7769
networkName: (id: number) => string
7870
resetWalletState: (options?: {
7971
disconnected: boolean
8072
walletName: string
8173
}) => void
82-
browser: Browser
83-
os: OS
8474
}) {
8575
const { default: createProvider } = await import('./providerEngine')
8676
const { generateAddresses, isValidPath } = await import('./hd-wallet')
77+
const { default: TransportU2F } = await import('@ledgerhq/hw-transport-u2f')
8778
const { default: Eth } = await import('@ledgerhq/hw-app-eth')
8879

8980
const EthereumTx = await import('ethereumjs-tx')
@@ -93,12 +84,10 @@ async function ledgerProvider(options: {
9384
const {
9485
networkId,
9586
rpcUrl,
96-
CustomLedgerTransport,
87+
LedgerTransport,
9788
BigNumber,
9889
networkName,
99-
resetWalletState,
100-
browser,
101-
os
90+
resetWalletState
10291
} = options
10392

10493
let dPath = ''
@@ -158,14 +147,10 @@ async function ledgerProvider(options: {
158147
provider.isCustomPath = isCustomPath
159148

160149
let transport: any
161-
let transportSubscription: any
162150
let eth: any
163151

164152
function disconnect() {
165153
transport && transport.close()
166-
transportSubscription &&
167-
transportSubscription.unsubscribe &&
168-
transportSubscription.unsubscribe()
169154
provider.stop()
170155
resetWalletState({ disconnected: true, walletName: 'Ledger' })
171156
}
@@ -200,54 +185,27 @@ async function ledgerProvider(options: {
200185

201186
async function createTransport() {
202187
try {
188+
transport = LedgerTransport
189+
? await LedgerTransport.create()
190+
: await TransportU2F.create()
191+
192+
eth = new Eth(transport)
193+
203194
const observer = {
204195
next: (event: any) => {
205196
if (event.type === 'remove') {
206197
disconnect()
207198
}
208199
},
209-
error: (error: any) => {
210-
throw new Error(error)
211-
},
200+
error: () => {},
212201
complete: () => {}
213202
}
214203

215-
if (CustomLedgerTransport) {
216-
transport = await CustomLedgerTransport.create()
217-
transportSubscription = CustomLedgerTransport.listen(observer)
218-
} else {
219-
if (
220-
os.name === 'Windows' &&
221-
parseInt(os.versionName) >= 11 &&
222-
(browser.name === 'Internet Explorer' || browser.name === 'Firefox')
223-
) {
224-
throw new Error(
225-
`OS: ${os.name} ${os.versionName} and Browser: ${browser.name} are not compatible with Ledger wallets, please switch to Chrome browser to continue.`
226-
)
227-
} else if (
228-
(os.name === 'macOS' || os.name === 'Linux') &&
229-
(browser.name === 'Firefox' || browser.name === 'Safari')
230-
) {
231-
const { default: TransportU2F } = await import(
232-
'@ledgerhq/hw-transport-u2f'
233-
)
234-
235-
transport = await TransportU2F.create()
236-
} else {
237-
const { default: TransportWebUsb } = await import(
238-
'@ledgerhq/hw-transport-webusb'
239-
)
240-
241-
transport = await TransportWebUsb.create()
242-
transportSubscription = TransportWebUsb.listen(observer)
243-
}
244-
}
245-
246-
eth = new Eth(transport)
204+
LedgerTransport
205+
? LedgerTransport.listen(observer)
206+
: TransportU2F.listen(observer)
247207
} catch (error) {
248-
throw new Error(
249-
'An error occurred when trying to connect to your Ledger wallet'
250-
)
208+
throw new Error('Error connecting to Ledger wallet')
251209
}
252210
}
253211

yarn.lock

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,25 +1004,11 @@
10041004
"@ledgerhq/logs" "^5.21.0"
10051005
rxjs "^6.6.0"
10061006

1007-
"@ledgerhq/devices@^5.22.0":
1008-
version "5.22.0"
1009-
resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.22.0.tgz#18595f3545b57cf60e50d6e9d83095dda21f575f"
1010-
integrity sha512-oJxhee/zlHmIx66zvQQTSpIsHOiiLjALemTX9oUtB4xQwFvoiptPnBCeTDTM9teode7wzk7oE9qdUAZuat+nCg==
1011-
dependencies:
1012-
"@ledgerhq/errors" "^5.22.0"
1013-
"@ledgerhq/logs" "^5.22.0"
1014-
rxjs "^6.6.2"
1015-
10161007
"@ledgerhq/errors@^5.21.0":
10171008
version "5.21.0"
10181009
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.21.0.tgz#2a7bdea62fe7e0bd9ccc3b786d2c179f8f65bc02"
10191010
integrity sha512-sGfXoaVGfzrhnexu2TEdgL2FAjM7PUeobWdDBx3DJKE+ARje1y+i5+qg7gyvQL+9k4FV7mW2xMOcnUI3T2Zw0Q==
10201011

1021-
"@ledgerhq/errors@^5.22.0":
1022-
version "5.22.0"
1023-
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.22.0.tgz#7327fc152d4896ddc26aada0943065db21c14880"
1024-
integrity sha512-XDT0meBn39+q+JWzUFXmiFbVYLTy+uHRFMb9napcxyZ0Q/MdKkle9/vkgtvRHjPIkGobklXpyefsgH3BZQHukA==
1025-
10261012
"@ledgerhq/hw-app-eth@^5.21.0":
10271013
version "5.21.0"
10281014
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.21.0.tgz#a6857df45cddf29b5e7623237171d7ffba42a44c"
@@ -1043,16 +1029,6 @@
10431029
"@ledgerhq/logs" "^5.21.0"
10441030
u2f-api "0.2.7"
10451031

1046-
"@ledgerhq/hw-transport-webusb@^5.22.0":
1047-
version "5.22.0"
1048-
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.22.0.tgz#f433b4ad8175e1b47b091766b85071c35175a27d"
1049-
integrity sha512-fPj9x+Ce48g1t7vv2RvT29KonDMUPhLMPGcsX7Kr+IRsheBnaJUhgUVzKXHevaNF1xWhkJEW/Sd8Wo5wyK1pOw==
1050-
dependencies:
1051-
"@ledgerhq/devices" "^5.22.0"
1052-
"@ledgerhq/errors" "^5.22.0"
1053-
"@ledgerhq/hw-transport" "^5.22.0"
1054-
"@ledgerhq/logs" "^5.22.0"
1055-
10561032
"@ledgerhq/hw-transport@^5.21.0":
10571033
version "5.21.0"
10581034
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.21.0.tgz#c94d13397a26e0755824e05613e2257a3d2b450b"
@@ -1062,25 +1038,11 @@
10621038
"@ledgerhq/errors" "^5.21.0"
10631039
events "^3.2.0"
10641040

1065-
"@ledgerhq/hw-transport@^5.22.0":
1066-
version "5.22.0"
1067-
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.22.0.tgz#d627948b43005ec9e7dfe85adf9aa01e130de280"
1068-
integrity sha512-MFfkVGYMYnr6fI4XGnJQNLd36JIrRpvd5WBmVSDhCO3UKUER2fJ9koVBGc97o7yXtE5IAlJKF+nR9HZJIa0lRQ==
1069-
dependencies:
1070-
"@ledgerhq/devices" "^5.22.0"
1071-
"@ledgerhq/errors" "^5.22.0"
1072-
events "^3.2.0"
1073-
10741041
"@ledgerhq/logs@^5.21.0":
10751042
version "5.21.0"
10761043
resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.21.0.tgz#19629222e44b4d312e232c2dfbe0d067ecc12830"
10771044
integrity sha512-eyPXrKfQ+HSLcITB5MdSWhXlImE2qKWTLT2u6l+a9wiCZl5yimSqn0uC5evxaP0McKOW0wSntgfj+gOoKv+Paw==
10781045

1079-
"@ledgerhq/logs@^5.22.0":
1080-
version "5.22.0"
1081-
resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.22.0.tgz#a54d6b5b391cdb4c2eacc9500feb04b90475c361"
1082-
integrity sha512-jV4mJxD1aieORm+sK9bYakQd9GMLd7KAxgt2IaxhrTU+QD5Ne47mxQOTys9p7f5w25ujs3R+Px2t3KiMRASHtg==
1083-
10841046
"@portis/eth-json-rpc-middleware@^4.1.2":
10851047
version "4.1.2"
10861048
resolved "https://registry.yarnpkg.com/@portis/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.1.2.tgz#391e392da03dea348c8111a8111ce4550aa24a02"
@@ -6028,7 +5990,7 @@ rustbn.js@~0.2.0:
60285990
resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca"
60295991
integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==
60305992

6031-
rxjs@^6.5.4, rxjs@^6.6.0, rxjs@^6.6.2:
5993+
rxjs@^6.5.4, rxjs@^6.6.0:
60325994
version "6.6.2"
60335995
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2"
60345996
integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==

0 commit comments

Comments
 (0)