Skip to content

Commit f4c6346

Browse files
authored
Merge pull request #386 from blocknative/develop
Release 1.10.0
2 parents ef27a41 + f769632 commit f4c6346

File tree

8 files changed

+752
-618
lines changed

8 files changed

+752
-618
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bnc-onboard",
3-
"version": "1.9.6",
3+
"version": "1.10.0",
44
"description": "Onboard users to web3 by allowing them to select a wallet, get that wallet ready to transact and have access to synced wallet state.",
55
"keywords": [
66
"ethereum",
@@ -50,10 +50,10 @@
5050
"@portis/web3": "^2.0.0-beta.42",
5151
"@toruslabs/torus-embed": "^1.3.0",
5252
"@unilogin/provider": "^0.5.21",
53-
"@walletconnect/web3-provider": "^1.0.0-beta.47",
53+
"@walletconnect/web3-provider": "^1.0.5",
5454
"authereum": "^0.0.4-beta.157",
5555
"bignumber.js": "^9.0.0",
56-
"bnc-sdk": "^2.1.3",
56+
"bnc-sdk": "^2.1.4",
5757
"bowser": "^2.5.2",
5858
"ethereumjs-tx": "^2.1.2",
5959
"ethereumjs-util": "^6.2.0",

src/modules/select/wallets/ledger.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ function ledger(options: LedgerOptions & { networkId: number }): WalletModule {
2121
svg: svg || ledgerIcon,
2222
iconSrc,
2323
wallet: async (helpers: Helpers) => {
24-
const { BigNumber, networkName } = helpers
24+
const { BigNumber, networkName, resetWalletState } = helpers
2525

2626
const provider = await ledgerProvider({
2727
rpcUrl,
2828
networkId,
2929
LedgerTransport,
3030
BigNumber,
31-
networkName
31+
networkName,
32+
resetWalletState
3233
})
3334

3435
return {
@@ -66,6 +67,10 @@ async function ledgerProvider(options: {
6667
LedgerTransport: any
6768
BigNumber: any
6869
networkName: (id: number) => string
70+
resetWalletState: (options?: {
71+
disconnected: boolean
72+
walletName: string
73+
}) => void
6974
}) {
7075
const { default: createProvider } = await import('./providerEngine')
7176
const { generateAddresses, isValidPath } = await import('./hd-wallet')
@@ -76,7 +81,14 @@ async function ledgerProvider(options: {
7681
const ethUtil = await import('ethereumjs-util')
7782
const buffer = await import('buffer')
7883

79-
const { networkId, rpcUrl, LedgerTransport, BigNumber, networkName } = options
84+
const {
85+
networkId,
86+
rpcUrl,
87+
LedgerTransport,
88+
BigNumber,
89+
networkName,
90+
resetWalletState
91+
} = options
8092

8193
let dPath = ''
8294
let addressToPath = new Map()
@@ -139,10 +151,8 @@ async function ledgerProvider(options: {
139151

140152
function disconnect() {
141153
transport && transport.close()
142-
dPath = ''
143-
addressToPath = new Map()
144-
enabled = false
145154
provider.stop()
155+
resetWalletState({ disconnected: true, walletName: 'Ledger' })
146156
}
147157

148158
async function setPath(path: string, custom?: boolean) {

src/modules/select/wallets/trezor.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,16 @@ function trezor(options: TrezorOptions & { networkId: number }): WalletModule {
2323
svg: svg || trezorIcon,
2424
iconSrc,
2525
wallet: async (helpers: Helpers) => {
26-
const { BigNumber, networkName } = helpers
26+
const { BigNumber, networkName, resetWalletState } = helpers
2727

2828
const provider = await trezorProvider({
2929
rpcUrl,
3030
networkId,
3131
email,
3232
appUrl,
3333
BigNumber,
34-
networkName
34+
networkName,
35+
resetWalletState
3536
})
3637

3738
return {
@@ -70,14 +71,27 @@ async function trezorProvider(options: {
7071
rpcUrl: string
7172
BigNumber: any
7273
networkName: (id: number) => string
74+
resetWalletState: (options?: {
75+
disconnected: boolean
76+
walletName: string
77+
}) => void
7378
}) {
7479
const TrezorConnectLibrary = await import('trezor-connect')
7580
const EthereumTx = await import('ethereumjs-tx')
7681
const ethUtil = await import('ethereumjs-util')
7782

7883
const { default: TrezorConnect, DEVICE_EVENT, DEVICE } = TrezorConnectLibrary
7984

80-
const { networkId, email, appUrl, rpcUrl, BigNumber, networkName } = options
85+
const {
86+
networkId,
87+
email,
88+
appUrl,
89+
rpcUrl,
90+
BigNumber,
91+
networkName,
92+
resetWalletState
93+
} = options
94+
8195
let dPath = ''
8296

8397
let addressToPath = new Map()
@@ -93,13 +107,6 @@ async function trezorProvider(options: {
93107
appUrl
94108
})
95109

96-
TrezorConnect.on(DEVICE_EVENT, (event: any) => {
97-
if (event.type === DEVICE.DISCONNECT) {
98-
enabled = false
99-
addressToPath = new Map()
100-
}
101-
})
102-
103110
const provider = createProvider({
104111
getAccounts: (callback: any) => {
105112
getAccounts()
@@ -134,6 +141,13 @@ async function trezorProvider(options: {
134141
rpcUrl
135142
})
136143

144+
TrezorConnect.on(DEVICE_EVENT, (event: any) => {
145+
if (event.type === DEVICE.DISCONNECT) {
146+
provider.stop()
147+
resetWalletState({ disconnected: true, walletName: 'Trezor' })
148+
}
149+
})
150+
137151
provider.setPath = setPath
138152
provider.dPath = dPath
139153
provider.enable = enable

src/modules/select/wallets/wallet-connect.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ function walletConnect(
109109
},
110110
type: 'sdk',
111111
desktop: true,
112+
mobile: true,
112113
preferred
113114
}
114115
}

src/onboard.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,9 @@ function init(initialization: Initialization): API {
130130

131131
if (subscriptions.wallet) {
132132
wallet.subscribe((wallet: Wallet) => {
133-
wallet.provider !== null &&
134-
subscriptions.wallet &&
135-
subscriptions.wallet(wallet)
133+
if (wallet.provider !== null) {
134+
subscriptions.wallet && subscriptions.wallet(wallet)
135+
}
136136
})
137137
}
138138
}

src/stores.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,11 @@ export function resetWalletState(options?: {
165165
// if walletName is the same as the current interface name then do a full reset (checking if to do a disconnect)
166166
if (currentInterface.name === walletName) {
167167
wallet.update(() => ({
168-
name: null,
169-
provider: null,
170-
connect: null,
171-
instance: null,
172-
dashboard: null
168+
name: undefined,
169+
provider: undefined,
170+
connect: undefined,
171+
instance: undefined,
172+
dashboard: undefined
173173
}))
174174

175175
!disconnected &&

src/utilities.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@ export function networkName(id: number): string {
228228
return 'goerli'
229229
case 42:
230230
return 'kovan'
231+
case 100:
232+
return 'xdai'
231233
default:
232234
return 'local'
233235
}
@@ -245,6 +247,8 @@ export function networkToId(network: string): number {
245247
return 5
246248
case 'kovan':
247249
return 42
250+
case 'xdai':
251+
return 100
248252
default:
249253
return 0
250254
}

0 commit comments

Comments
 (0)