diff --git a/packages/adapters/default-evm-adapter/src/injectedEvmAdapter.ts b/packages/adapters/default-evm-adapter/src/injectedEvmAdapter.ts index 16a17e8f9..09a530a5c 100644 --- a/packages/adapters/default-evm-adapter/src/injectedEvmAdapter.ts +++ b/packages/adapters/default-evm-adapter/src/injectedEvmAdapter.ts @@ -84,12 +84,18 @@ class InjectedEvmAdapter extends BaseEvmAdapter { } } this.status = ADAPTER_STATUS.CONNECTED; - const disconnectHandler = () => { - // ready to be connected again + const chainDisconnectHandler = () => { this.disconnect(); - this.injectedProvider?.removeListener("disconnect", disconnectHandler); + this.injectedProvider?.removeListener("disconnect", chainDisconnectHandler); }; - this.injectedProvider.on("disconnect", disconnectHandler); + this.injectedProvider.on("disconnect", chainDisconnectHandler); + const accountDisconnectHandler = (accounts: string[]) => { + if (accounts.length === 0) { + this.disconnect(); + this.injectedProvider?.removeListener("accountsChanged", accountDisconnectHandler); + } + }; + this.injectedProvider.on("accountsChanged", accountDisconnectHandler); this.emit(ADAPTER_EVENTS.CONNECTED, { adapter: this.name, reconnected: this.rehydrated,