diff --git a/.changeset/thin-wolves-joke.md b/.changeset/thin-wolves-joke.md new file mode 100644 index 0000000000..056b73f7c3 --- /dev/null +++ b/.changeset/thin-wolves-joke.md @@ -0,0 +1,7 @@ +--- +'wagmi-private': patch +'wagmi': patch +'wagmi-testing': patch +--- + +add shim for metamask chain changed to prevent disconnect diff --git a/packages/private/src/connectors/injected.ts b/packages/private/src/connectors/injected.ts index 37645cd9fa..89f75e5ee2 100644 --- a/packages/private/src/connectors/injected.ts +++ b/packages/private/src/connectors/injected.ts @@ -24,6 +24,13 @@ type InjectedConnectorOptions = { * @see https://github.com/MetaMask/metamask-extension/issues/10353 */ shimDisconnect?: boolean + /** + * MetaMask 10.9.3 emits disconnect event when chain is changed. + * This flag disables the disconnect event and relies on the accountsChanged event for updating wallet connection. + * This workaround is experimental and might result in stale connections. + * @see https://github.com/MetaMask/metamask-extension/issues/13375#issuecomment-1027663334 + */ + shimChainChangedDisconnect?: boolean } const shimKey = 'wagmi.shimDisconnect' @@ -57,7 +64,8 @@ export class InjectedConnector extends Connector< if (provider.on) { provider.on('accountsChanged', this.onAccountsChanged) provider.on('chainChanged', this.onChainChanged) - provider.on('disconnect', this.onDisconnect) + if (!this.options?.shimChainChangedDisconnect) + provider.on('disconnect', this.onDisconnect) } const account = await this.getAccount() @@ -169,6 +177,7 @@ export class InjectedConnector extends Connector< }, ], }) + return chain } catch (addError) { throw new AddChainError() } diff --git a/packages/private/src/constants/chains.ts b/packages/private/src/constants/chains.ts index dbe41106b8..d2ad980571 100644 --- a/packages/private/src/constants/chains.ts +++ b/packages/private/src/constants/chains.ts @@ -169,7 +169,7 @@ export const chain: Record = { name: 'Rinkeby Arbitrum', nativeCurrency: { name: 'Rinkeby ArbEther', - symbol: 'rinkArbETH', + symbol: 'ARETH', decimals: 18, }, rpcUrls: ['https://rinkeby.arbitrum.io/rpc'], @@ -214,7 +214,7 @@ export const chain: Record = { }, hardhat: { id: 31_337, - name: 'hardhat', + name: 'Hardhat', rpcUrls: ['http://127.0.0.1:8545'], }, }