Skip to content

Commit 04c7799

Browse files
authored
Merge pull request #529 from blocknative/release/1.23.0
Release 1.23.0
2 parents a8872dd + 4048637 commit 04c7799

File tree

16 files changed

+491
-239
lines changed

16 files changed

+491
-239
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.22.0",
3+
"version": "1.23.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
"@ledgerhq/hw-transport-u2f": "^5.21.0",
5151
"@portis/web3": "^2.0.0-beta.57",
5252
"@toruslabs/torus-embed": "^1.9.2",
53-
"@walletconnect/web3-provider": "^1.3.1",
53+
"@walletconnect/web3-provider": "^1.4.1",
5454
"authereum": "^0.1.12",
5555
"bignumber.js": "^9.0.0",
56-
"bnc-sdk": "^3.1.0",
56+
"bnc-sdk": "^3.2.0",
5757
"bowser": "^2.10.0",
5858
"eth-lattice-keyring": "^0.2.7",
5959
"eth-provider": "^0.6.1",

src/modules/select/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const mobileDefaultWalletNames = [
2323
'dcent',
2424
'atoken',
2525
'liquality',
26+
'alphawallet',
2627
'ownbit'
2728
]
2829

@@ -134,6 +135,8 @@ function getModule(
134135
return import('./wallets/liquality')
135136
case 'frame':
136137
return import('./wallets/frame')
138+
case 'alphawallet':
139+
return import('./wallets/alphawallet')
137140
case 'ownbit':
138141
return import('./wallets/ownbit')
139142
default:
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
const alphawalletIcon = `
2+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3+
<title>Icons/Illustrations/Logo_40x40_white_background</title>
4+
<defs>
5+
<polygon id="path-1" points="0 0.00969654897 22.1768096 0.00969654897 22.1768096 22.5628733 0 22.5628733"></polygon>
6+
</defs>
7+
<g id="Icons/Illustrations/Logo_40x40_white_background" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8+
<rect id="Rectangle" fill="#FFFFFF" x="0" y="0" width="40" height="40"></rect>
9+
<g id="Group" transform="translate(4.000000, 8.000000)">
10+
<path d="M25.5504862,9.39777725 C25.517192,9.44017246 25.4831932,9.48199281 25.4511321,9.52434012 L25.4504862,9.52381317 C25.4831932,9.48146587 25.5165461,9.44017246 25.5504862,9.39777725" id="Fill-3" fill="#81BA28"></path>
11+
<path d="M25.5504862,9.39777725 C25.517192,9.44017246 25.4831932,9.48199281 25.4511321,9.52434012 L25.4504862,9.52381317 C25.4831932,9.48146587 25.5165461,9.44017246 25.5504862,9.39777725" id="Fill-5" fill="#FFFFFF"></path>
12+
<path d="M30.9175952,0.922639521 C30.6027689,1.4252503 26.387679,8.05533413 25.9824096,8.69068743 C25.8887569,8.83818443 25.7972599,8.98098683 25.7072958,9.12321437 C25.6482299,9.21576527 25.5896431,9.30726228 25.5321102,9.39722635 C25.0917749,7.6949988 23.6719425,6.38553772 21.9085413,6.10937006 C21.9884934,5.98333413 24.4615952,2.07109461 25.0865533,1.07741796 C25.1571641,0.962926946 25.2203976,0.878711377 25.3783377,0.879235864 C27.1977868,0.884986826 29.0150323,0.884986826 30.8339066,0.886567665 C30.8500982,0.886567665 30.8673437,0.900172455 30.9175952,0.922639521" id="Fill-7" fill="#81BA28"></path>
13+
<path d="M31.9695665,20.1439138 C31.0590994,21.2243928 30.0335665,21.9873629 28.7303329,22.293806 C26.9407281,22.714309 25.2348599,22.5239377 23.707291,21.4173509 C22.5954826,20.6140455 21.9187401,19.4896862 21.4261413,18.2387641 C21.4115305,18.2016383 21.3947641,18.1577102 21.3748838,18.1054467 C21.3712431,18.0954826 21.3665006,18.0850395 21.3633868,18.0740695 C21.235818,17.738788 21.0150754,17.1321772 20.7985964,16.4769437 C20.6223569,15.9414228 20.450812,15.3734707 20.335794,14.8923689 C20.6197222,14.9488479 20.9130874,14.9775904 21.213303,14.9775904 C22.5379497,14.9775904 23.7287521,14.3997222 24.5440335,13.4829796 L24.5539497,13.4730156 C24.8541653,14.2166802 25.1658299,15.3839138 25.4623569,16.2907401 C25.4634108,16.2933749 25.4644647,16.2964886 25.4649916,16.2980695 C25.5459976,16.5459737 25.6249916,16.7744766 25.7045126,16.9695425 C26.0334228,17.7911473 26.382788,18.5944048 27.0432431,19.2047042 C27.0871713,19.2449437 27.1332072,19.2847042 27.1797701,19.3234108 C28.0400335,20.0361772 29.0692072,20.2218539 30.1433629,20.2568719 C30.7265006,20.2762251 31.3054228,20.1962251 31.9695665,20.1439138" id="Fill-9" fill="#E52F2E"></path>
14+
<g id="Group-13" transform="translate(0.000000, 0.000000)">
15+
<mask id="mask-2" fill="white">
16+
<use xlink:href="#path-1"></use>
17+
</mask>
18+
<g id="Clip-12"></g>
19+
<path d="M17.4382707,12.8972359 C16.3813605,14.3756551 15.2344862,15.7824575 13.8863186,17.029691 C12.7493605,18.0803257 11.5387257,19.0206371 10.078079,19.5874874 C9.52109701,19.8050683 8.94380359,19.9237749 8.34346826,19.9185054 C6.64746826,19.922194 5.42897725,18.8595353 5.06864192,17.0835353 C4.74864192,15.5052838 4.91022275,13.9505054 5.35314491,12.4297389 C6.17316886,9.61201437 7.61388743,7.12066108 9.52531257,4.90638563 C10.3903186,3.9049485 11.3833725,3.04415808 12.6808575,2.63155928 C13.5976,2.34025389 14.5206659,2.25761916 15.4170012,2.71783473 C16.1078754,3.0729006 16.5889772,3.64607425 16.9727856,4.30135569 C17.5198036,5.23275689 17.8586778,6.24363114 18.152091,7.2717509 C18.9506539,6.51764311 20.0274443,6.05589461 21.2129772,6.05589461 C21.4493365,6.05589461 21.682103,6.07472096 21.9084982,6.10978683 C21.9231569,6.08621796 22.0220311,5.93091257 22.1768096,5.6866491 C21.9733605,5.2180982 21.8007617,4.79242156 21.6067976,4.37771497 C21.0001389,3.08650539 20.1712527,1.9700024 18.9768096,1.16358323 C17.5595641,0.207607186 15.9860072,-0.0988359281 14.2962826,0.0423377246 C12.1427497,0.221691018 10.1340311,0.84822994 8.29843832,1.9814994 C5.38188743,3.78466108 3.09187545,6.19759521 1.48531257,9.22921198 C0.45508503,11.1699066 -0.137441916,13.2361102 0.0273005988,15.4597749 C0.240138922,18.3287569 1.6856,20.3803018 4.2570012,21.6348647 C6.25680958,22.6112479 8.38576766,22.6991042 10.5430371,22.4340024 C12.3352287,22.2137868 14.0254323,21.6254754 15.5832766,20.7238707 C17.4743425,19.6298347 19.1127617,18.2037269 20.6387976,16.6489485 C20.6910611,16.5945772 20.7250251,16.5145772 20.7987976,16.4769246 C20.6225581,15.9414036 20.4510611,15.3734994 20.3370491,14.8923497 C19.1190371,14.649715 18.0799473,13.9117988 17.4382707,12.8972359" id="Fill-11" fill="#4BBCEC" mask="url(#mask-2)"></path>
20+
</g>
21+
<path d="M23.4685844,10.517303 C23.4685844,11.7630036 22.4581892,12.7733509 21.2124886,12.7733509 C19.966788,12.7733509 18.9569677,11.7630036 18.9569677,10.517303 C18.9569677,9.2716503 19.966788,8.26125509 21.2124886,8.26125509 C22.4581892,8.26125509 23.4685844,9.2716503 23.4685844,10.517303" id="Fill-1" fill="#FFD400"></path>
22+
</g>
23+
</g>
24+
</svg>
25+
`
26+
27+
export default alphawalletIcon

src/modules/select/wallet-icons/icon-lattice.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ const latticeIcon = `
88
</svg>
99
`
1010

11-
export default latticeIcon
11+
export default latticeIcon
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import { mobileWalletInstallMessage } from '../content'
2+
import {
3+
WalletModule,
4+
Helpers,
5+
InjectedWithBalanceOptions
6+
} from '../../../interfaces'
7+
8+
import alphawalletIcon from '../wallet-icons/icon-alphawallet'
9+
10+
function alphawallet(options: InjectedWithBalanceOptions): WalletModule {
11+
const { preferred, label, iconSrc, svg, rpcUrl } = options
12+
13+
return {
14+
name: label || 'AlphaWallet',
15+
svg: svg || alphawalletIcon,
16+
iconSrc,
17+
wallet: async (helpers: Helpers) => {
18+
const { getProviderName, getAddress, getNetwork, getBalance } = helpers
19+
const alphawalletProvider =
20+
(window as any).ethereum ||
21+
((window as any).web3 && (window as any).web3.currentProvider)
22+
23+
const isAlphaWallet =
24+
getProviderName(alphawalletProvider) === 'AlphaWallet'
25+
let createProvider
26+
27+
if (isAlphaWallet && rpcUrl) {
28+
createProvider = (await import('./providerEngine')).default
29+
}
30+
31+
const provider = createProvider ? createProvider({ rpcUrl }) : null
32+
33+
let warned = false
34+
35+
return {
36+
provider: alphawalletProvider,
37+
interface: isAlphaWallet
38+
? {
39+
address: {
40+
get: () => getAddress(alphawalletProvider)
41+
},
42+
network: {
43+
get: () => getNetwork(alphawalletProvider)
44+
},
45+
balance: {
46+
get: async () => {
47+
if (!provider) {
48+
if (!warned) {
49+
console.warn(
50+
'The AlphaWallet provider does not allow rpc calls preventing Onboard.js from getting the balance. You can pass in a "rpcUrl" to the AlphaWallet initialization object to get the balance.'
51+
)
52+
warned = true
53+
}
54+
55+
return null
56+
}
57+
58+
const address = await getAddress(alphawalletProvider)
59+
60+
return getBalance(provider, address)
61+
}
62+
},
63+
name: getProviderName(alphawalletProvider)
64+
}
65+
: null
66+
}
67+
},
68+
type: 'injected',
69+
link: `https://alphawallet.com`,
70+
installMessage: mobileWalletInstallMessage,
71+
mobile: true,
72+
preferred
73+
}
74+
}
75+
76+
export default alphawallet

src/modules/select/wallets/atoken.ts

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,34 @@ import atokenIcon from '../wallet-icons/icon-atoken.png'
55
import atokenIcon2x from '../wallet-icons/icon-atoken@2x.png'
66

77
function atoken(options: CommonWalletOptions): WalletModule {
8-
const { preferred, label, iconSrc, svg } = options
8+
const { preferred, label, iconSrc, svg } = options
99

10-
return {
11-
name: label || 'AToken',
12-
iconSrc: iconSrc || atokenIcon,
13-
iconSrcSet: iconSrc || atokenIcon2x,
14-
svg,
15-
wallet: async (helpers: Helpers) => {
16-
const { getProviderName, createModernProviderInterface } = helpers
10+
return {
11+
name: label || 'AToken',
12+
iconSrc: iconSrc || atokenIcon,
13+
iconSrcSet: iconSrc || atokenIcon2x,
14+
svg,
15+
wallet: async (helpers: Helpers) => {
16+
const { getProviderName, createModernProviderInterface } = helpers
1717

18-
const provider =
19-
(window as any).ethereum ||
20-
((window as any).web3 && (window as any).web3.currentProvider)
18+
const provider =
19+
(window as any).ethereum ||
20+
((window as any).web3 && (window as any).web3.currentProvider)
2121

22-
return {
23-
provider,
24-
interface:
25-
(getProviderName(provider) === 'AToken' &&
26-
createModernProviderInterface(provider)) ||
27-
null
28-
}
29-
},
30-
type: 'injected',
31-
link: 'https://www.atoken.com',
32-
installMessage: mobileWalletInstallMessage,
33-
mobile: true,
34-
preferred
35-
}
22+
return {
23+
provider,
24+
interface:
25+
(getProviderName(provider) === 'AToken' &&
26+
createModernProviderInterface(provider)) ||
27+
null
28+
}
29+
},
30+
type: 'injected',
31+
link: 'https://www.atoken.com',
32+
installMessage: mobileWalletInstallMessage,
33+
mobile: true,
34+
preferred
35+
}
3636
}
3737

3838
export default atoken

src/modules/select/wallets/dcent.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,32 @@ function dcent(options: CommonWalletOptions): WalletModule {
88
const url = (window as any).location.origin || (window as any).location.host
99
const encodedUrl = encodeURIComponent(url)
1010
return {
11-
name: label || 'D\'CENT',
11+
name: label || "D'CENT",
1212
svg: svg || dcentIcon,
1313
iconSrc,
1414
wallet: async (helpers: Helpers) => {
15-
const {
16-
getProviderName,
17-
createModernProviderInterface,
18-
createLegacyProviderInterface
15+
const {
16+
getProviderName,
17+
createModernProviderInterface,
18+
createLegacyProviderInterface
1919
} = helpers
20-
21-
const provider = (window as any).ethereum ||
22-
(window as any).web3 && (window as any).web3.currentProvider
20+
21+
const provider =
22+
(window as any).ethereum ||
23+
((window as any).web3 && (window as any).web3.currentProvider)
2324

2425
return {
2526
provider,
2627
interface:
27-
provider && getProviderName(provider) === 'D\'CENT'
28+
provider && getProviderName(provider) === "D'CENT"
2829
? typeof provider.enable === 'function'
2930
? createModernProviderInterface(provider)
3031
: createLegacyProviderInterface(provider)
3132
: null
3233
}
3334
},
3435
type: 'injected',
35-
link: 'https://link.dcentwallet.com/DAppBrowser/?url='+ encodedUrl ,
36+
link: 'https://link.dcentwallet.com/DAppBrowser/?url=' + encodedUrl,
3637
installMessage: extensionInstallMessage,
3738
mobile: true,
3839
preferred

src/modules/select/wallets/liquality.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,35 @@ import liqualityIcon from '../wallet-icons/icon-liquality.png'
55
import liqualityIcon2x from '../wallet-icons/icon-liquality@2x.png'
66

77
function liquality(options: CommonWalletOptions): WalletModule {
8-
const { preferred, label, iconSrc, svg } = options
8+
const { preferred, label, iconSrc, svg } = options
99

10-
return {
11-
name: label || 'Liquality',
12-
iconSrc: iconSrc || liqualityIcon,
13-
iconSrcSet: iconSrc || liqualityIcon2x,
14-
svg,
15-
wallet: async (helpers: Helpers) => {
16-
const { getProviderName, createModernProviderInterface } = helpers
10+
return {
11+
name: label || 'Liquality',
12+
iconSrc: iconSrc || liqualityIcon,
13+
iconSrcSet: iconSrc || liqualityIcon2x,
14+
svg,
15+
wallet: async (helpers: Helpers) => {
16+
const { getProviderName, createModernProviderInterface } = helpers
1717

18-
const provider =
19-
(window as any).ethereum ||
20-
((window as any).web3 && (window as any).web3.currentProvider)
18+
const provider =
19+
(window as any).ethereum ||
20+
((window as any).web3 && (window as any).web3.currentProvider)
2121

22-
return {
23-
provider,
24-
interface:
25-
(getProviderName(provider) === 'Liquality' &&
26-
createModernProviderInterface(provider)) ||
27-
null
28-
}
29-
},
30-
type: 'injected',
31-
link: 'https://liquality.io',
32-
installMessage: extensionInstallMessage,
33-
desktop: true,
34-
mobile: false,
35-
preferred
36-
}
22+
return {
23+
provider,
24+
interface:
25+
(getProviderName(provider) === 'Liquality' &&
26+
createModernProviderInterface(provider)) ||
27+
null
28+
}
29+
},
30+
type: 'injected',
31+
link: 'https://liquality.io',
32+
installMessage: extensionInstallMessage,
33+
desktop: true,
34+
mobile: false,
35+
preferred
36+
}
3737
}
3838

3939
export default liquality

src/modules/select/wallets/providerEngine.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function createProvider(config: any) {
1616
processMessage,
1717
processPersonalMessage,
1818
signMessage,
19-
signPersonalMessage,
19+
signPersonalMessage
2020
} = config
2121

2222
const pollingInterval = get(app).blockPollingInterval
@@ -36,7 +36,7 @@ function createProvider(config: any) {
3636
rpcUrl: rpcUrl.includes('http') ? rpcUrl : `https://${rpcUrl}`
3737
})
3838

39-
const provider = new Web3ProviderEngine({pollingInterval})
39+
const provider = new Web3ProviderEngine({ pollingInterval })
4040

4141
provider.addProvider(new SubscriptionSubprovider())
4242
provider.addProvider(new FilterSubprovider())

src/modules/select/wallets/tokenpocket.ts

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,34 @@ import tokenpocketIcon from '../wallet-icons/icon-tokenpocket.png'
55
import tokenpocketIcon2x from '../wallet-icons/icon-tokenpocket@2x.png'
66

77
function tokenpocket(options: CommonWalletOptions): WalletModule {
8-
const { preferred, label, iconSrc, svg } = options
8+
const { preferred, label, iconSrc, svg } = options
99

10-
return {
11-
name: label || 'TokenPocket',
12-
iconSrc: iconSrc || tokenpocketIcon,
13-
iconSrcSet: iconSrc || tokenpocketIcon2x,
14-
svg,
15-
wallet: async (helpers: Helpers) => {
16-
const { getProviderName, createModernProviderInterface } = helpers
10+
return {
11+
name: label || 'TokenPocket',
12+
iconSrc: iconSrc || tokenpocketIcon,
13+
iconSrcSet: iconSrc || tokenpocketIcon2x,
14+
svg,
15+
wallet: async (helpers: Helpers) => {
16+
const { getProviderName, createModernProviderInterface } = helpers
1717

18-
const provider =
19-
(window as any).ethereum ||
20-
((window as any).web3 && (window as any).web3.currentProvider)
18+
const provider =
19+
(window as any).ethereum ||
20+
((window as any).web3 && (window as any).web3.currentProvider)
2121

22-
return {
23-
provider,
24-
interface:
25-
(getProviderName(provider) === 'TokenPocket' &&
26-
createModernProviderInterface(provider)) ||
27-
null
28-
}
29-
},
30-
type: 'injected',
31-
link: 'https://tokenpocket.pro',
32-
installMessage: mobileWalletInstallMessage,
33-
mobile: true,
34-
preferred
35-
}
22+
return {
23+
provider,
24+
interface:
25+
(getProviderName(provider) === 'TokenPocket' &&
26+
createModernProviderInterface(provider)) ||
27+
null
28+
}
29+
},
30+
type: 'injected',
31+
link: 'https://tokenpocket.pro',
32+
installMessage: mobileWalletInstallMessage,
33+
mobile: true,
34+
preferred
35+
}
3636
}
3737

3838
export default tokenpocket

0 commit comments

Comments
 (0)