Skip to content

Commit bedb7cd

Browse files
authored
Merge pull request #447 from blocknative/develop
Release 1.15.0
2 parents 7330e43 + 5876148 commit bedb7cd

File tree

9 files changed

+96
-22
lines changed

9 files changed

+96
-22
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bnc-onboard",
3-
"version": "1.14.0",
3+
"version": "1.15.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",

src/modules/check/accounts.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ function accountSelect(
7777
`
7878
: `
7979
<div style="display: flex; align-items: center;">
80-
<select id="account-select" onchange="window.accountSelect()" style="padding: 0.5rem;">
80+
<select id="account-select" onchange="window.accountSelect();" class="bn-onboard-custom bn-onboard-account-select>
8181
${accountsAndBalances.map(
8282
(account: { balance: string; address: string }) =>
8383
`<option>${account.address} --- ${

src/modules/select/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ const defaultWalletNames = [
1414
'operaTouch',
1515
'status',
1616
'hyperpay',
17-
'unilogin'
17+
'unilogin',
18+
'tokenpocket'
1819
]
1920

2021
function select(
@@ -100,9 +101,11 @@ function getModule(name: string): Promise<any> | undefined {
100101
case 'huobiwallet':
101102
return import('./wallets/huobiwallet')
102103
case 'wallet.io':
103-
return import('./wallets/wallet-io')
104+
return import('./wallets/wallet-io')
104105
case 'hyperpay':
105106
return import('./wallets/hyperpay')
107+
case 'tokenpocket':
108+
return import('./wallets/tokenpocket')
106109
default:
107110
return
108111
}
Loading
Loading
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { mobileWalletInstallMessage } from '../content'
2+
import { WalletModule, Helpers, CommonWalletOptions } from '../../../interfaces'
3+
4+
import tokenpocketIcon from '../wallet-icons/icon-tokenpocket.png'
5+
import tokenpocketIcon2x from '../wallet-icons/icon-tokenpocket@2x.png'
6+
7+
function tokenpocket(options: CommonWalletOptions): WalletModule {
8+
const { preferred, label, iconSrc, svg } = options
9+
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
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) === '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+
}
36+
}
37+
38+
export default tokenpocket

src/utilities.ts

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,28 @@ import { WalletInterface } from './interfaces'
55

66
export function getNetwork(provider: any): Promise<number | any> {
77
return new Promise((resolve, reject) => {
8-
const params = {
8+
const options = {
99
jsonrpc: '2.0',
1010
method: 'net_version',
1111
params: [],
1212
id: 42
1313
}
1414

15+
// use MetaMask parameter if there
16+
if (provider.chainId) {
17+
return resolve(Number(provider.chainId))
18+
}
19+
1520
const callback = (e: any, res: any) => {
1621
e && reject(e)
1722
const result = res && res.result
1823
resolve(result && Number(result))
1924
}
2025

2126
if (typeof provider.sendAsync === 'function') {
22-
provider.sendAsync(params, callback)
27+
provider.sendAsync(options, callback)
2328
} else if (typeof provider.send === 'function') {
24-
provider.send(params, callback)
29+
provider.send(options, callback)
2530
} else {
2631
resolve(null)
2732
}
@@ -30,23 +35,30 @@ export function getNetwork(provider: any): Promise<number | any> {
3035

3136
export function getAddress(provider: any): Promise<string | any> {
3237
return new Promise((resolve, reject) => {
33-
const params = {
38+
const options = {
3439
jsonrpc: '2.0',
3540
method: 'eth_accounts',
3641
params: [],
3742
id: 42
3843
}
3944

45+
// use MetaMask request method if there
46+
if (provider.request) {
47+
return provider.request(options).then((res: string[]) => {
48+
return resolve(res[0])
49+
})
50+
}
51+
4052
const callback = (e: any, res: any) => {
4153
e && reject(e)
4254
const result = res && res.result && res.result[0]
4355
resolve(result)
4456
}
4557

4658
if (typeof provider.sendAsync === 'function') {
47-
provider.sendAsync(params, callback)
59+
provider.sendAsync(options, callback)
4860
} else if (typeof provider.send === 'function') {
49-
provider.send(params, callback)
61+
provider.send(options, callback)
5062
} else {
5163
resolve(null)
5264
}
@@ -65,23 +77,31 @@ export function getBalance(
6577
return
6678
}
6779

68-
const params = {
80+
const options = {
6981
jsonrpc: '2.0',
7082
method: 'eth_getBalance',
7183
params: [currentAddress, 'latest'],
7284
id: 42
7385
}
7486

87+
// use MetaMask request method if there
88+
if (provider.request) {
89+
return provider
90+
.request(options)
91+
.then((res: string) => (res ? new BigNumber(res).toString(10) : null))
92+
.then(resolve)
93+
}
94+
7595
const callback = (e: any, res: any) => {
7696
e && reject(e)
7797
const result = res && res.result
7898
resolve(result && new BigNumber(result).toString(10))
7999
}
80100

81101
if (typeof provider.sendAsync === 'function') {
82-
provider.sendAsync(params, callback)
102+
provider.sendAsync(options, callback)
83103
} else if (typeof provider.send === 'function') {
84-
provider.send(params, callback)
104+
provider.send(options, callback)
85105
} else {
86106
resolve(null)
87107
}
@@ -131,14 +151,19 @@ export function createModernProviderInterface(provider: any): WalletInterface {
131151
connect: () =>
132152
new Promise(
133153
(resolve: () => void, reject: (err: { message: string }) => void) => {
134-
provider
135-
.enable()
136-
.then(resolve)
137-
.catch(() =>
138-
reject({
139-
message: 'This dapp needs access to your account information.'
154+
const request = provider.request
155+
? getAddress(provider).then((address: string) => {
156+
return address
157+
? address
158+
: provider.request({ method: 'eth_requestAccounts' })
140159
})
141-
)
160+
: provider.enable()
161+
162+
return request.then(resolve).catch(() =>
163+
reject({
164+
message: 'This dapp needs access to your account information.'
165+
})
166+
)
142167
}
143168
),
144169
name: getProviderName(provider)
@@ -164,7 +189,11 @@ export function getProviderName(provider: any): string | undefined {
164189
if (!provider) return
165190

166191
if (provider.isWalletIO) {
167-
return 'wallet.io';
192+
return 'wallet.io'
193+
}
194+
195+
if (provider.isTokenPocket) {
196+
return 'TokenPocket'
168197
}
169198

170199
if (provider.wallet === 'MEETONE') {

src/views/Onboard.svelte

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
color: #91bced;
3939
border-color: #91bced;
4040
}
41+
42+
:global(.bn-onboard-wallet-check-section select) {
43+
padding: 0.5rem;
44+
}
4145
</style>
4246

4347
{#if $app.walletSelectInProgress}

src/views/WalletCheck.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@
334334
{/if}
335335

336336
{#if activeModal.html}
337-
<section>
337+
<section class="bn-onboard-custom bn-onboard-wallet-check-section">
338338
{@html activeModal.html}
339339
</section>
340340
{/if}

0 commit comments

Comments
 (0)