@@ -12,6 +12,8 @@ import TransportU2F from '@ledgerhq/hw-transport-u2f'
12
12
import Eth from '@ledgerhq/hw-app-eth'
13
13
import * as EthereumTx from 'ethereumjs-tx'
14
14
15
+ import buffer from 'buffer'
16
+
15
17
function ledger ( options : LedgerOptions & CommonWalletOptions ) : WalletModule {
16
18
const { rpcUrl, networkId, preferred, label, iconSrc, svg } = options
17
19
@@ -36,23 +38,15 @@ function ledger(options: LedgerOptions & CommonWalletOptions): WalletModule {
36
38
connect : provider . enable ,
37
39
disconnect : ( ) => provider . stop ( ) ,
38
40
address : {
39
- onChange : async func => {
40
- const address = await provider . getPrimaryAddress ( )
41
- func ( address )
42
- provider . on ( 'accountsChanged' , ( accounts : Array < string > ) =>
43
- func ( accounts [ 0 ] )
44
- )
45
- }
41
+ get : async ( ) => provider . getPrimaryAddress ( )
46
42
} ,
47
43
network : {
48
- onChange : func => {
49
- func ( networkId )
50
- }
44
+ get : async ( ) => networkId
51
45
} ,
52
46
balance : {
53
47
get : async ( ) => {
54
- const address = await provider . getPrimaryAddress ( )
55
- return provider . getBalance ( address )
48
+ const address = provider . getPrimaryAddress ( )
49
+ return address && provider . getBalance ( address )
56
50
}
57
51
}
58
52
}
@@ -74,8 +68,6 @@ async function ledgerProvider(options: {
74
68
const basePath = networkIdToDerivationPath ( networkId )
75
69
76
70
let addressToPath = new Map ( )
77
- let listeners = new Map ( )
78
-
79
71
let enabled : boolean = false
80
72
81
73
const provider = createProvider ( {
@@ -92,34 +84,26 @@ async function ledgerProvider(options: {
92
84
rpcUrl
93
85
} )
94
86
95
- provider . on ( 'error' , ( err : any ) => console . log ( 'provider error' , err ) )
96
-
97
87
provider . getPrimaryAddress = getPrimaryAddress
98
88
provider . getAllAccountsAndBalances = getAllAccountsAndBalances
99
89
provider . enable = enable
100
- provider . on = on
101
90
provider . setPrimaryAccount = setPrimaryAccount
102
91
provider . getBalance = getBalance
103
92
provider . send = provider . sendAsync
104
93
105
94
function enable ( ) {
95
+ const buff = buffer . Buffer . from ( '4' )
96
+ console . log ( { buff } )
106
97
enabled = true
107
98
return getAccounts ( 1 )
108
99
}
109
100
110
- function on (
111
- event : 'accountsChanged' ,
112
- callback : ( accounts : Array < string > ) => void
113
- ) {
114
- listeners . set ( event , callback )
115
- }
116
-
117
101
function addresses ( ) {
118
102
return Array . from ( addressToPath . keys ( ) )
119
103
}
120
104
121
105
function getPrimaryAddress ( ) {
122
- return addresses ( ) [ 0 ]
106
+ return enabled ? addresses ( ) [ 0 ] : undefined
123
107
}
124
108
125
109
async function getAllAccountsAndBalances ( amountToGet : number = 5 ) {
@@ -145,10 +129,6 @@ async function ledgerProvider(options: {
145
129
accounts . unshift ( accounts . splice ( accountIndex , 1 ) [ 0 ] )
146
130
// reassign addressToPath to new ordered accounts
147
131
addressToPath = new Map ( accounts )
148
-
149
- // let listeners know of change
150
- const listener = listeners . get ( 'accountsChanged' )
151
- listener && listener ( addresses ( ) )
152
132
}
153
133
154
134
function getAccounts (
@@ -206,9 +186,6 @@ async function ledgerProvider(options: {
206
186
207
187
const allAddresses = addresses ( )
208
188
209
- const listener = listeners . get ( 'accountsChanged' )
210
- listener && listener ( allAddresses )
211
-
212
189
transport . close ( )
213
190
214
191
resolve ( allAddresses )
@@ -263,9 +240,9 @@ async function ledgerProvider(options: {
263
240
transaction . serialize ( ) . toString ( 'hex' )
264
241
)
265
242
266
- transaction . v = Buffer . from ( ledgerResult . v , 'hex' )
267
- transaction . r = Buffer . from ( ledgerResult . r , 'hex' )
268
- transaction . s = Buffer . from ( ledgerResult . s , 'hex' )
243
+ transaction . v = buffer . Buffer . from ( ledgerResult . v , 'hex' )
244
+ transaction . r = buffer . Buffer . from ( ledgerResult . r , 'hex' )
245
+ transaction . s = buffer . Buffer . from ( ledgerResult . s , 'hex' )
269
246
270
247
return `0x${ transaction . serialize ( ) . toString ( 'hex' ) } `
271
248
} catch ( error ) {
0 commit comments