From 1c89f22e3b519714858f4dc93441a5582ab39c72 Mon Sep 17 00:00:00 2001 From: tanguyenvn Date: Sat, 12 Oct 2024 14:30:00 +0700 Subject: [PATCH] handle account disconnected in evm injected provider --- .../default-evm-adapter/src/injectedEvmAdapter.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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,