diff --git a/.github/workflows/issue-to-notion.yml b/.github/workflows/issue-to-notion.yml index 21405fdfe..fb5843884 100644 --- a/.github/workflows/issue-to-notion.yml +++ b/.github/workflows/issue-to-notion.yml @@ -24,8 +24,8 @@ jobs: FLAG: Github STATUS: Backlog # Product Work Board - DATABASE_ID: 29876f9a9b864ca39a984f42e17fd345 - PROJECT_NAME: Onboard.js + DATABASE_ID: 69f0e513a59d445b87a1baed729c75c5 + PROJECT_NAME: web3-onboard # User ids of who to assign the card to in notion: Taylor, Adam, Aaron NOTION_USER_IDS: f6cbb362-4908-4138-9ef0-434003d9a9f8,8a3a2287-5d2c-4665-906d-02ae9a113340,3b407adf-6552-40de-b22f-5efa852c34a2 shell: bash diff --git a/package.json b/package.json index b6fff3e4e..ca9ac7484 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "web3-onboard-monorepo", - "version": "2.11.1", + "version": "2.12.0", "private": true, "workspaces": { "packages": [ @@ -51,7 +51,7 @@ "url": "https://github.com/blocknative/web3-onboard.git", "directory": "packages/core" }, - "homepage": "https://www.blocknative.com/onboard", + "homepage": "https://onboard.blocknative.com", "bugs": "https://github.com/blocknative/web3-onboard/issues", "scripts": { "install-m1-mac": "yarn install --ignore-optional", diff --git a/packages/coinbase/package.json b/packages/coinbase/package.json index 09b9256ab..f1be439c9 100644 --- a/packages/coinbase/package.json +++ b/packages/coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/coinbase", - "version": "2.1.2", + "version": "2.1.3", "description": "Coinbase SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", "keywords": [ "Ethereum", @@ -38,7 +38,7 @@ "url": "https://github.com/blocknative/web3-onboard.git", "directory": "packages/coinbase" }, - "homepage": "https://www.blocknative.com/onboard", + "homepage": "https://onboard.blocknative.com", "bugs": "https://github.com/blocknative/web3-onboard/issues", "module": "dist/index.js", "browser": "dist/index.js", @@ -59,6 +59,6 @@ }, "dependencies": { "@coinbase/wallet-sdk": "^3.0.5", - "@web3-onboard/common": "^2.2.2" + "@web3-onboard/common": "^2.2.3" } } diff --git a/packages/common/package.json b/packages/common/package.json index c706eedf2..a010e2420 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/common", - "version": "2.2.2", + "version": "2.2.3", "description": "Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", "keywords": [ "Ethereum", @@ -38,7 +38,7 @@ "url": "https://github.com/blocknative/web3-onboard.git", "directory": "packages/common" }, - "homepage": "https://www.blocknative.com/onboard", + "homepage": "https://onboard.blocknative.com", "bugs": "https://github.com/blocknative/web3-onboard/issues", "scripts": { "build": "tsc", @@ -75,6 +75,6 @@ "dependencies": { "bignumber.js": "^9.1.0", "ethers": "5.5.4", - "joi": "^17.4.2" + "joi": "^17.6.1" } } diff --git a/packages/core/package.json b/packages/core/package.json index 09be25749..2717988e4 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/core", - "version": "2.8.4", + "version": "2.8.5", "description": "Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardized spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", "keywords": [ "Ethereum", @@ -39,7 +39,7 @@ "url": "https://github.com/blocknative/web3-onboard.git", "directory": "packages/core" }, - "homepage": "https://www.blocknative.com/onboard", + "homepage": "https://onboard.blocknative.com", "bugs": "https://github.com/blocknative/web3-onboard/issues", "scripts": { "build": "rollup -c", @@ -82,13 +82,13 @@ "typescript": "^4.5.5" }, "dependencies": { - "@web3-onboard/common": "^2.2.2", + "@web3-onboard/common": "^2.2.3", "bignumber.js": "^9.0.0", "bnc-sdk": "^4.4.1", "bowser": "^2.11.0", "ethers": "5.5.3", "eventemitter3": "^4.0.7", - "joi": "17.6.0", + "joi": "^17.6.1", "lodash.merge": "^4.6.2", "lodash.partition": "^4.6.0", "nanoid": "^4.0.0", diff --git a/packages/core/src/chain.ts b/packages/core/src/chain.ts index 7fbb0d52a..ce4bf05ab 100644 --- a/packages/core/src/chain.ts +++ b/packages/core/src/chain.ts @@ -1,6 +1,6 @@ -import { firstValueFrom } from 'rxjs' +import { firstValueFrom, Observable } from 'rxjs' import { filter, map } from 'rxjs/operators' -import { ProviderRpcErrorCode } from '@web3-onboard/common' +import { Chain, ProviderRpcErrorCode } from '@web3-onboard/common' import { addNewChain, switchChain } from './provider.js' import { state } from './store/index.js' import { switchChainModal$ } from './streams.js' @@ -66,21 +66,17 @@ async function setChain(options: { filter(x => x === null), map(() => false) ) - if ( code === ProviderRpcErrorCode.CHAIN_NOT_ADDED || code === ProviderRpcErrorCode.UNRECOGNIZED_CHAIN_ID ) { // chain has not been added to wallet - try { - await addNewChain(wallet.provider, chain) - await switchChain(wallet.provider, chainIdHex) - return true - } catch (error) { - // display notification to user to switch chain - switchChainModal$.next({ chain }) - return firstValueFrom(switchChainModalClosed$) - } + return chainNotInWallet( + wallet, + chain, + switchChainModalClosed$, + chainIdHex + ) } if (code === ProviderRpcErrorCode.UNSUPPORTED_METHOD) { @@ -93,4 +89,26 @@ async function setChain(options: { return false } +const chainNotInWallet = async ( + wallet: WalletState, + chain: Chain, + switchChainModalClosed$: Observable, + chainIdHex: string +): Promise => { + try { + await addNewChain(wallet.provider, chain) + await switchChain(wallet.provider, chainIdHex) + return true + } catch (error) { + const { code } = error as { code: number } + if (code === ProviderRpcErrorCode.ACCOUNT_ACCESS_REJECTED) { + // add new chain rejected by user + return false + } + // display notification to user to switch chain + switchChainModal$.next({ chain }) + return firstValueFrom(switchChainModalClosed$) + } +} + export default setChain diff --git a/packages/core/src/i18n/en.json b/packages/core/src/i18n/en.json index d26cc28e0..8927dc977 100644 --- a/packages/core/src/i18n/en.json +++ b/packages/core/src/i18n/en.json @@ -25,6 +25,7 @@ }, "mainText": "Connecting...", "paragraph": "Make sure to select all accounts that you want to grant access to.", + "previousConnection": "{wallet} already has a pending connection request, please open the {wallet} app to login and connect.", "rejectedText": "Connection Rejected!", "rejectedCTA": "Click here to try again", "primaryButton": "Back to wallets" diff --git a/packages/core/src/views/connect/ConnectingWallet.svelte b/packages/core/src/views/connect/ConnectingWallet.svelte index 3c38b10c8..16e898911 100644 --- a/packages/core/src/views/connect/ConnectingWallet.svelte +++ b/packages/core/src/views/connect/ConnectingWallet.svelte @@ -12,6 +12,7 @@ export let deselectWallet: (label: string) => void export let setStep: (update: keyof i18n['connect']) => void export let connectionRejected: boolean + export let previousConnectionRequest: boolean const { appMetadata } = configuration @@ -69,7 +70,7 @@
@@ -77,7 +78,9 @@ size={40} padding={8} icon={(appMetadata && appMetadata.icon) || questionIcon} - border={connectionRejected ? 'yellow' : 'blue'} + border={connectionRejected || previousConnectionRequest + ? 'yellow' + : 'blue'} background="lightGray" /> @@ -85,7 +88,9 @@ @@ -95,9 +100,9 @@
{$_( - connectionRejected - ? 'connect.connectingWallet.rejectedText' - : 'connect.connectingWallet.mainText', + `connect.connectingWallet.${ + connectionRejected ? 'rejectedText' : 'mainText' + }`, { default: connectionRejected ? en.connect.connectingWallet.rejectedText @@ -113,9 +118,15 @@
{:else}
- {$_('connect.connectingWallet.paragraph', { - default: en.connect.connectingWallet.paragraph - })} + {$_( + `connect.connectingWallet.${ + previousConnectionRequest ? 'previousConnection' : 'paragraph' + }`, + { + default: en.connect.connectingWallet.paragraph, + values: { wallet: selectedWallet.label } + } + )}
{/if}
diff --git a/packages/core/src/views/connect/Index.svelte b/packages/core/src/views/connect/Index.svelte index c3eb65f13..eb0b8d71a 100644 --- a/packages/core/src/views/connect/Index.svelte +++ b/packages/core/src/views/connect/Index.svelte @@ -1,10 +1,9 @@