From 4e380603cfa584492cda97b4cd4c5e54d126a45e Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 20 May 2022 15:30:07 -0600 Subject: [PATCH 1/8] Update coinbase naming per team request and dedupe wallets by label --- packages/coinbase/package.json | 2 +- packages/coinbase/src/index.ts | 2 +- packages/core/package.json | 2 +- packages/core/src/store/actions.ts | 7 +++++-- packages/core/src/utils.ts | 11 +++++++++++ packages/injected/src/types.ts | 2 +- packages/react/package.json | 2 +- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/coinbase/package.json b/packages/coinbase/package.json index 0eca74fbf..b60ee4cc3 100644 --- a/packages/coinbase/package.json +++ b/packages/coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/coinbase", - "version": "2.0.2", + "version": "2.0.2-alpha.1", "description": "Coinbase Wallet module for web3-onboard", "module": "dist/index.js", "browser": "dist/index.js", diff --git a/packages/coinbase/src/index.ts b/packages/coinbase/src/index.ts index b7c86aa9a..d087825f7 100644 --- a/packages/coinbase/src/index.ts +++ b/packages/coinbase/src/index.ts @@ -8,7 +8,7 @@ function coinbaseWallet({ return ({ device }) => device.type === 'mobile' ? { - label: 'Coinbase', + label: 'Coinbase Wallet', getIcon: async () => (await import('./icon.js')).default, getInterface: async ({ chains, appMetadata }) => { const [chain] = chains diff --git a/packages/core/package.json b/packages/core/package.json index ef35cff2a..6d5833353 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/core", - "version": "2.2.9-alpha.2", + "version": "2.2.9-alpha.3", "scripts": { "build": "rollup -c", "dev": "rollup -c -w", diff --git a/packages/core/src/store/actions.ts b/packages/core/src/store/actions.ts index e85b01f5d..36ae818c9 100644 --- a/packages/core/src/store/actions.ts +++ b/packages/core/src/store/actions.ts @@ -1,6 +1,6 @@ import type { Chain, WalletInit } from '@web3-onboard/common' import { internalState$ } from '../streams' -import { initializeWalletModules } from '../utils' +import { initializeWalletModules, uniqueWalletsByLabel } from '../utils' import { dispatch } from './index' import type { @@ -152,14 +152,17 @@ export function setWalletModules(wallets: WalletInit[]): void { throw error } + console.log(wallets) + const modules = initializeWalletModules( wallets, internalState$.getValue().device ) + const dedupedWallets = uniqueWalletsByLabel(modules) const action = { type: SET_WALLET_MODULES, - payload: modules + payload: dedupedWallets } dispatch(action as SetWalletModulesAction) diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 5dc9ab758..e140c4906 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -173,3 +173,14 @@ export function initializeWalletModules( return acc }, [] as WalletModule[]) } + +export function uniqueWalletsByLabel( + array: WalletModule[] +): WalletModule[] { + return array.filter( + (element, i) => + array.findIndex( + (a: WalletModule) => a.label === element.label + ) === i + ) +} diff --git a/packages/injected/src/types.ts b/packages/injected/src/types.ts index 643ce7f57..655fb89c1 100644 --- a/packages/injected/src/types.ts +++ b/packages/injected/src/types.ts @@ -49,7 +49,7 @@ export enum ProviderLabel { Bitpie = 'Bitpie', BlockWallet = 'BlockWallet', Brave = 'Brave Wallet', - Coinbase = 'Coinbase', + Coinbase = 'Coinbase Wallet', Dcent = `D'CENT`, Detected = 'Detected Wallet', Frame = 'Frame', diff --git a/packages/react/package.json b/packages/react/package.json index 4ac0445e1..1e6747ad3 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -21,7 +21,7 @@ "typescript": "^4.5.5" }, "dependencies": { - "@web3-onboard/core": "^2.2.9-alpha.2", + "@web3-onboard/core": "^2.2.9-alpha.3", "@web3-onboard/common": "^2.1.0-alpha.1" }, "peerDependencies": { From 0b7342378b5b066901d73e26c7f2f62d92285d8a Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 20 May 2022 15:33:42 -0600 Subject: [PATCH 2/8] Refine var naming --- packages/core/src/utils.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index e140c4906..93ad3b777 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -175,12 +175,12 @@ export function initializeWalletModules( } export function uniqueWalletsByLabel( - array: WalletModule[] + walletModuleList: WalletModule[] ): WalletModule[] { - return array.filter( - (element, i) => - array.findIndex( - (a: WalletModule) => a.label === element.label + return walletModuleList.filter( + (wallet, i) => + walletModuleList.findIndex( + (innerWallet: WalletModule) => innerWallet.label === wallet.label ) === i ) } From 5e7f3e45c4af1640e447844f64d386e5450a496f Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 20 May 2022 15:36:09 -0600 Subject: [PATCH 3/8] Remove console.log --- packages/core/src/store/actions.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/core/src/store/actions.ts b/packages/core/src/store/actions.ts index 36ae818c9..ec0c573a1 100644 --- a/packages/core/src/store/actions.ts +++ b/packages/core/src/store/actions.ts @@ -152,8 +152,6 @@ export function setWalletModules(wallets: WalletInit[]): void { throw error } - console.log(wallets) - const modules = initializeWalletModules( wallets, internalState$.getValue().device From 341ee39bcfa7c144ace68daa3d385d19cd8d9589 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 24 May 2022 09:12:55 -0600 Subject: [PATCH 4/8] Update package versioning --- packages/coinbase/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/coinbase/package.json b/packages/coinbase/package.json index b60ee4cc3..0be5cf57e 100644 --- a/packages/coinbase/package.json +++ b/packages/coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/coinbase", - "version": "2.0.2-alpha.1", + "version": "2.0.3-alpha.1", "description": "Coinbase Wallet module for web3-onboard", "module": "dist/index.js", "browser": "dist/index.js", @@ -21,6 +21,6 @@ }, "dependencies": { "@coinbase/wallet-sdk": "^3.0.5", - "@web3-onboard/common": "^2.0.7" + "@web3-onboard/common": "2.1.0-alpha.1" } } From 74125ebb720709e285d871c444693abf2512d134 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 24 May 2022 09:18:18 -0600 Subject: [PATCH 5/8] Bump react version for alpha pub --- packages/react/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react/package.json b/packages/react/package.json index 1e6747ad3..da08b3d24 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/react", - "version": "2.1.7-alpha.3", + "version": "2.1.7-alpha.4", "description": "Collection of React Hooks for web3-onboard", "module": "dist/index.js", "browser": "dist/index.js", From 3eeae03e7d0c1fa4738648827ff70df20558cb97 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 24 May 2022 10:48:26 -0600 Subject: [PATCH 6/8] Update version for injected wallets to get coinbase --- packages/injected/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/injected/package.json b/packages/injected/package.json index 2f9b08021..240b55aaa 100644 --- a/packages/injected/package.json +++ b/packages/injected/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/injected-wallets", - "version": "2.0.6", + "version": "2.0.7-alpha.1", "description": "Injected wallets module for web3-onboard", "module": "dist/index.js", "browser": "dist/index.js", From 189def228ec81b41a55dc0b6b5bd939c49e80a28 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 24 May 2022 11:16:36 -0600 Subject: [PATCH 7/8] Update coinbase package to remove mobile check --- packages/coinbase/package.json | 2 +- packages/coinbase/src/index.ts | 87 +++++++++++++++++----------------- 2 files changed, 44 insertions(+), 45 deletions(-) diff --git a/packages/coinbase/package.json b/packages/coinbase/package.json index 0be5cf57e..a1e30dde8 100644 --- a/packages/coinbase/package.json +++ b/packages/coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/coinbase", - "version": "2.0.3-alpha.1", + "version": "2.0.3-alpha.2", "description": "Coinbase Wallet module for web3-onboard", "module": "dist/index.js", "browser": "dist/index.js", diff --git a/packages/coinbase/src/index.ts b/packages/coinbase/src/index.ts index d087825f7..39b9b48ea 100644 --- a/packages/coinbase/src/index.ts +++ b/packages/coinbase/src/index.ts @@ -5,53 +5,52 @@ function coinbaseWallet({ }: { darkMode?: boolean } = {}): WalletInit { - return ({ device }) => - device.type === 'mobile' - ? { - label: 'Coinbase Wallet', - getIcon: async () => (await import('./icon.js')).default, - getInterface: async ({ chains, appMetadata }) => { - const [chain] = chains - const { name, icon } = appMetadata || {} - - const { CoinbaseWalletSDK } = await import('@coinbase/wallet-sdk') - - const base64 = window.btoa(icon || '') - const appLogoUrl = `data:image/svg+xml;base64,${base64}` - - const instance = new CoinbaseWalletSDK({ - appName: name || '', - appLogoUrl, - darkMode - }) - - const coinbaseWalletProvider = instance.makeWeb3Provider( - chain.rpcUrl, - parseInt(chain.id) - ) - - // patch the chainChanged event - const on = coinbaseWalletProvider.on.bind(coinbaseWalletProvider) - coinbaseWalletProvider.on = (event, listener) => { - on(event, val => { - if (event === 'chainChanged') { - listener(`0x${(val as number).toString(16)}`) - return - } - - listener(val) - }) - - return coinbaseWalletProvider + return () => { + return { + label: 'Coinbase Wallet', + getIcon: async () => (await import('./icon.js')).default, + getInterface: async ({ chains, appMetadata }) => { + const [chain] = chains + const { name, icon } = appMetadata || {} + + const { CoinbaseWalletSDK } = await import('@coinbase/wallet-sdk') + + const base64 = window.btoa(icon || '') + const appLogoUrl = `data:image/svg+xml;base64,${base64}` + + const instance = new CoinbaseWalletSDK({ + appName: name || '', + appLogoUrl, + darkMode + }) + + const coinbaseWalletProvider = instance.makeWeb3Provider( + chain.rpcUrl, + parseInt(chain.id) + ) + + // patch the chainChanged event + const on = coinbaseWalletProvider.on.bind(coinbaseWalletProvider) + coinbaseWalletProvider.on = (event, listener) => { + on(event, val => { + if (event === 'chainChanged') { + listener(`0x${(val as number).toString(16)}`) + return } - return { - provider: coinbaseWalletProvider, - instance - } - } + listener(val) + }) + + return coinbaseWalletProvider + } + + return { + provider: coinbaseWalletProvider, + instance } - : null + } + } + } } export default coinbaseWallet From 1583011f933a4573c51ac1ee2562082f2658973e Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 24 May 2022 11:35:35 -0600 Subject: [PATCH 8/8] Update docs to reflect Coinbase package in favor of deprecated walletlink --- packages/core/README.md | 2 +- packages/react/README.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core/README.md b/packages/core/README.md index 8f8510c07..499769f40 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -10,7 +10,7 @@ Install the core module: If you would like to support all wallets, then you can install all of the wallet modules: -`npm i @web3-onboard/injected-wallets @web3-onboard/ledger @web3-onboard/trezor @web3-onboard/keepkey @web3-onboard/walletconnect @web3-onboard/walletlink @web3-onboard/torus @web3-onboard/portis @web3-onboard/mew @web3-onboard/gnosis @web3-onboard/magic @web3-onboard/fortmatic` +`npm i @web3-onboard/injected-wallets @web3-onboard/coinbase @web3-onboard/ledger @web3-onboard/trezor @web3-onboard/keepkey @web3-onboard/walletconnect @web3-onboard/torus @web3-onboard/portis @web3-onboard/mew @web3-onboard/gnosis @web3-onboard/magic @web3-onboard/fortmatic` Note: diff --git a/packages/react/README.md b/packages/react/README.md index 42fd0e72a..f999c2ee5 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -17,17 +17,17 @@ import { useWallets } from '@web3-onboard/react' import injectedModule from '@web3-onboard/injected-wallets' +import coinbaseModule from '@web3-onboard/coinbase' import trezorModule from '@web3-onboard/trezor' import ledgerModule from '@web3-onboard/ledger' import walletConnectModule from '@web3-onboard/walletconnect' -import walletLinkModule from '@web3-onboard/walletlink' import portisModule from '@web3-onboard/portis' import fortmaticModule from '@web3-onboard/fortmatic' import torusModule from '@web3-onboard/torus' import keepkeyModule from '@web3-onboard/keepkey' const injected = injectedModule() -const walletLink = walletLinkModule() +const coinbase = coinbaseModule() const walletConnect = walletConnectModule() const portis = portisModule({ @@ -51,12 +51,12 @@ const trezor = trezorModule(trezorOptions) const web3Onboard = init({ wallets: [ + injected, + coinbase, ledger, trezor, walletConnect, keepkey, - walletLink, - injected, fortmatic, portis, torus