Skip to content

Commit 3b24626

Browse files
authored
Merge pull request #411 from blocknative/develop
Release 1.11.0
2 parents 645969c + 20f1dd9 commit 3b24626

File tree

10 files changed

+772
-616
lines changed

10 files changed

+772
-616
lines changed

package.json

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bnc-onboard",
3-
"version": "1.10.4",
3+
"version": "1.11.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",
@@ -45,24 +45,23 @@
4545
"typescript": "^3.6.4"
4646
},
4747
"dependencies": {
48-
"@ledgerhq/hw-app-eth": "^5.19.0",
49-
"@ledgerhq/hw-transport-u2f": "^5.19.0",
50-
"@portis/web3": "^2.0.0-beta.55",
51-
"@toruslabs/torus-embed": "^1.8.1",
52-
"@unilogin/provider": "^0.5.21",
53-
"@walletconnect/web3-provider": "^1.0.13",
48+
"@ledgerhq/hw-app-eth": "^5.21.0",
49+
"@ledgerhq/hw-transport-u2f": "^5.21.0",
50+
"@portis/web3": "^2.0.0-beta.57",
51+
"@toruslabs/torus-embed": "^1.8.2",
52+
"@unilogin/provider": "^0.6.1",
53+
"@walletconnect/web3-provider": "^1.1.0",
5454
"authereum": "^0.0.4-beta.157",
5555
"bignumber.js": "^9.0.0",
5656
"bnc-sdk": "^2.1.4",
57-
"bowser": "^2.5.2",
57+
"bowser": "^2.10.0",
5858
"ethereumjs-tx": "^2.1.2",
59-
"ethereumjs-util": "^6.2.0",
60-
"ethereumjs-wallet": "^0.6.3",
61-
"fortmatic": "^0.8.2",
62-
"hdkey": "^1.1.1",
63-
"regenerator-runtime": "^0.13.3",
59+
"ethereumjs-util": "^7.0.3",
60+
"fortmatic": "^2.2.1",
61+
"hdkey": "^2.0.1",
62+
"regenerator-runtime": "^0.13.7",
6463
"squarelink": "^1.1.4",
65-
"trezor-connect": "^8.1.2",
64+
"trezor-connect": "^8.1.9",
6665
"walletlink": "^2.0.2",
6766
"web3-provider-engine": "^15.0.4"
6867
},

src/@types/index.d.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,3 @@ declare module '@ledgerhq/hw-transport-u2f'
1515

1616
declare module '*.png'
1717
declare module '*.svg'
18-
19-
declare module 'svelte-i18n' {
20-
interface Options {
21-
fallback: string
22-
navigator: boolean
23-
}
24-
export function getClientLocale(options: Options): string
25-
26-
export namespace _ {
27-
export function subscribe(dictionary: any): void
28-
}
29-
30-
export namespace dictionary {
31-
export function set(dictionary: any): void
32-
}
33-
34-
export namespace locale {
35-
export function set(locale: string): void
36-
}
37-
}

src/modules/select/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ function select(
5454

5555
function getModule(name: string): Promise<any> | undefined {
5656
switch (name) {
57+
case 'meetone':
58+
return import('./wallets/meetone')
5759
case 'metamask':
5860
return import('./wallets/metamask')
5961
case 'dapper':
Loading

src/modules/select/wallets/fortmatic.ts

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,44 @@ function fortmatic(
1919
apiKey,
2020
networkId === 1 ? undefined : networkName(networkId)
2121
)
22+
2223
const provider = instance.getProvider()
23-
const { BigNumber } = helpers
24+
const { BigNumber, getAddress } = helpers
25+
26+
let enabled: boolean
2427

2528
return {
2629
provider,
2730
instance,
2831
interface: {
2932
name: 'Fortmatic',
30-
connect: instance.user.login,
31-
disconnect: instance.user.logout,
33+
connect: () =>
34+
instance.user.login().then((res: any) => {
35+
enabled = true
36+
return res
37+
}),
38+
disconnect: () => instance.user.logout(),
3239
address: {
33-
get: () => Promise.resolve(provider.account)
40+
get: () => (enabled ? getAddress(provider) : Promise.resolve())
3441
},
3542
network: {
3643
get: () => Promise.resolve(networkId)
3744
},
3845
balance: {
39-
get: () =>
40-
provider.account &&
41-
instance.user
42-
.getBalances()
43-
.then((res: any) =>
44-
res[0]
45-
? BigNumber(res[0].crypto_amount)
46-
.times(BigNumber('1000000000000000000'))
47-
.toString(10)
48-
: null
49-
)
46+
get: async () => {
47+
return (
48+
enabled &&
49+
instance.user
50+
.getBalances()
51+
.then((res: any) =>
52+
res[0]
53+
? BigNumber(res[0].crypto_amount)
54+
.times(BigNumber('1000000000000000000'))
55+
.toString(10)
56+
: null
57+
)
58+
)
59+
}
5060
},
5161
dashboard: () => instance.user.settings()
5262
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export function generateAddresses(
2828

2929
addresses.push({
3030
dPath: `${path}/${i}`,
31-
address: toChecksumAddress(address)
31+
address: toChecksumAddress(`0x${address}`)
3232
})
3333
}
3434

src/modules/select/wallets/meetone.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { extensionInstallMessage } from '../content'
2+
import { WalletModule, Helpers, CommonWalletOptions } from '../../../interfaces'
3+
4+
import meetoneIcon from '../wallet-icons/icon-meetone.png'
5+
import meetoneIcon2x from '../wallet-icons/icon-meetone.png'
6+
7+
function meetone(options: CommonWalletOptions): WalletModule {
8+
const { preferred, label, iconSrc, svg } = options
9+
10+
return {
11+
name: label || 'MEETONE',
12+
iconSrc: iconSrc || meetoneIcon,
13+
iconSrcSet: iconSrc || meetoneIcon2x,
14+
svg,
15+
wallet: async (helpers: Helpers) => {
16+
const { getProviderName, createModernProviderInterface } = helpers
17+
18+
const provider =
19+
(window as any).ethereum ||
20+
((window as any).web3 && (window as any).web3.currentProvider)
21+
22+
return {
23+
provider,
24+
interface:
25+
(getProviderName(provider) === 'MEETONE' &&
26+
createModernProviderInterface(provider)) ||
27+
null
28+
}
29+
},
30+
type: 'injected',
31+
link: 'https://meet.one',
32+
installMessage: extensionInstallMessage,
33+
mobile: true,
34+
preferred
35+
}
36+
}
37+
38+
export default meetone

src/utilities.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,16 @@ export function createModernProviderInterface(provider: any): WalletInterface {
112112
onChange: (func: (val: string | number) => void) => {
113113
// get initial value
114114
getNetwork(provider).then(func)
115+
116+
// networkChanged event is deprecated in MM, keep for wallets that may not have updated
115117
provider.on('networkChanged', (netId: string | number) =>
116118
func(netId && Number(netId))
117119
)
120+
121+
// use new chainChanged event for network change
122+
provider.on('chainChanged', (netId: string | number) =>
123+
func(netId && Number(netId))
124+
)
118125
}
119126
}
120127
: { get: () => getNetwork(provider) },
@@ -156,6 +163,10 @@ export function createLegacyProviderInterface(provider: any): WalletInterface {
156163
export function getProviderName(provider: any): string | undefined {
157164
if (!provider) return
158165

166+
if (provider.wallet === 'MEETONE') {
167+
return 'MEETONE'
168+
}
169+
159170
if (provider.isTorus) {
160171
return 'Torus'
161172
}

src/validation.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,11 @@ export function validateWalletInit(
628628
'buttonPosition',
629629
'enableLogging',
630630
'loginMethod',
631+
'loginConfig',
631632
'showTorusButton',
633+
'modalZindex',
634+
'integrity',
635+
'whiteLabel',
632636
'appName',
633637
'appLogoUrl',
634638
'enabledVerifiers',

0 commit comments

Comments
 (0)