Skip to content

Commit 3999a69

Browse files
1.19.2-0.2.0: [enhancement] - Add Frame (#494)
* Add Frame * Use default import * Add to rollup config to indicate an external dep * Add type definition * Add frame wallet module import * Update yarn.lock * Use simple icon * Add disconnect logic and error handling * Increment version Co-authored-by: Aaron <abarnard@protonmail.com>
1 parent f4059b0 commit 3999a69

File tree

8 files changed

+87
-3
lines changed

8 files changed

+87
-3
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bnc-onboard",
3-
"version": "1.19.2-0.1.0",
3+
"version": "1.19.2-0.2.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",
@@ -55,6 +55,7 @@
5555
"bnc-sdk": "^3.1.0",
5656
"bowser": "^2.10.0",
5757
"eth-lattice-keyring": "^0.2.7",
58+
"eth-provider": "^0.6.1",
5859
"ethereumjs-tx": "^2.1.2",
5960
"ethereumjs-util": "^7.0.3",
6061
"fortmatic": "^2.2.1",

rollup.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ export default {
8080
'web3-provider-engine/subproviders/hooked-wallet',
8181
'web3-provider-engine/subproviders/rpc',
8282
'web3-provider-engine/subproviders/subscriptions',
83-
'web3-provider-engine/subproviders/filters'
83+
'web3-provider-engine/subproviders/filters',
84+
'eth-provider'
8485
]
8586
}

src/@types/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ declare module 'ethereumjs-util'
1313
declare module 'hdkey'
1414
declare module '@ledgerhq/hw-app-eth'
1515
declare module '@ledgerhq/hw-transport-u2f'
16+
declare module 'eth-provider'
1617

1718
declare module '*.png'
1819
declare module '*.svg'

src/modules/select/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ function getModule(
125125
return import('./wallets/atoken')
126126
case 'liquality':
127127
return import('./wallets/liquality')
128+
case 'frame':
129+
return import('./wallets/frame')
128130
default:
129131
throw new Error(`${name} is not a valid walletName.`)
130132
}
1.82 KB
Loading
Loading

src/modules/select/wallets/frame.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { extensionInstallMessage } from '../content'
2+
import { WalletModule, Helpers, CommonWalletOptions } from '../../../interfaces'
3+
4+
import frameIcon from '../wallet-icons/icon-frame.png'
5+
import frameIcon2x from '../wallet-icons/icon-frame@2x.png'
6+
7+
function frame(options: CommonWalletOptions): WalletModule {
8+
const { preferred, label, iconSrc, svg } = options
9+
10+
return {
11+
name: label || 'Frame',
12+
iconSrc: iconSrc || frameIcon,
13+
iconSrcSet: iconSrc || frameIcon2x,
14+
svg,
15+
wallet: async (helpers: Helpers) => {
16+
const { createModernProviderInterface } = helpers
17+
18+
const { default: ethProvider } = await import('eth-provider')
19+
const provider = ethProvider('frame')
20+
21+
return {
22+
provider,
23+
interface: {
24+
...createModernProviderInterface(provider),
25+
connect: () =>
26+
provider
27+
.request({
28+
method: 'eth_requestAccounts'
29+
})
30+
.catch((err: { message: string }) => {
31+
if (err.message.includes('Unexpected end of JSON input')) {
32+
throw new Error('Frame is not running')
33+
}
34+
35+
throw err
36+
}),
37+
disconnect: provider.close
38+
}
39+
}
40+
},
41+
type: 'injected', // native
42+
link: `https://frame.sh`,
43+
installMessage: extensionInstallMessage,
44+
desktop: true,
45+
mobile: false,
46+
preferred
47+
}
48+
}
49+
50+
export default frame

yarn.lock

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3556,6 +3556,18 @@ eth-lib@0.2.8:
35563556
elliptic "^6.4.0"
35573557
xhr-request-promise "^0.1.2"
35583558

3559+
eth-provider@^0.6.1:
3560+
version "0.6.1"
3561+
resolved "https://registry.yarnpkg.com/eth-provider/-/eth-provider-0.6.1.tgz#795c69205f023678ed79f9139233426afdbc479c"
3562+
integrity sha512-0sBNzOBEUSQmo5zHSQ/os25ULh+LeoTTK5nGxiTJpXo8R0OOxOzYiVWLfAWuIuYLhzT1ma5A1wPZWMt+gPGeoA==
3563+
dependencies:
3564+
ethereum-provider "0.2.2"
3565+
events "3.2.0"
3566+
oboe "2.1.5"
3567+
uuid "8.3.2"
3568+
ws "7.4.3"
3569+
xhr2-cookies "1.1.0"
3570+
35593571
eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2:
35603572
version "2.1.2"
35613573
resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e"
@@ -3670,6 +3682,13 @@ ethereum-private-key-to-public-key@0.0.2:
36703682
meow "^5.0.0"
36713683
secp256k1 "^3.7.1"
36723684

3685+
ethereum-provider@0.2.2:
3686+
version "0.2.2"
3687+
resolved "https://registry.yarnpkg.com/ethereum-provider/-/ethereum-provider-0.2.2.tgz#37ba0674a6c05915b51afb8e6d13e9bd166f1c33"
3688+
integrity sha512-147DaU4nccfYYCAKhrILdgSWTjjZX2NnmcZJx12frM+cNw8cGTbpQPpi4xApagIk7HlN16ZncCP5uyOiZN7n3g==
3689+
dependencies:
3690+
events "3.2.0"
3691+
36733692
ethereum-public-key-to-address@0.0.1:
36743693
version "0.0.1"
36753694
resolved "https://registry.yarnpkg.com/ethereum-public-key-to-address/-/ethereum-public-key-to-address-0.0.1.tgz#3f0237687d9c2217234dc5683f3eb580abf3f6ce"
@@ -3886,7 +3905,7 @@ eventemitter3@4.0.4:
38863905
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
38873906
integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
38883907

3889-
events@^3.0.0, events@^3.1.0, events@^3.2.0:
3908+
events@3.2.0, events@^3.0.0, events@^3.1.0, events@^3.2.0:
38903909
version "3.2.0"
38913910
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
38923911
integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
@@ -7174,6 +7193,11 @@ uuid@7.0.2:
71747193
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.2.tgz#7ff5c203467e91f5e0d85cfcbaaf7d2ebbca9be6"
71757194
integrity sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==
71767195

7196+
uuid@8.3.2:
7197+
version "8.3.2"
7198+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
7199+
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
7200+
71777201
uuid@^3.3.2:
71787202
version "3.4.0"
71797203
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
@@ -7518,6 +7542,11 @@ ws@7.3.0:
75187542
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd"
75197543
integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==
75207544

7545+
ws@7.4.3:
7546+
version "7.4.3"
7547+
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd"
7548+
integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==
7549+
75217550
ws@^5.1.1:
75227551
version "5.2.2"
75237552
resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"

0 commit comments

Comments
 (0)