From 793c9e2df152c9e49e69b072bc71428a108b1e37 Mon Sep 17 00:00:00 2001 From: Felipe Mendes Date: Wed, 20 Nov 2024 16:22:50 -0300 Subject: [PATCH 1/4] fix: siwe failing to reconnect with wagmi on page refresh --- apps/laboratory/tests/siwe.spec.ts | 6 +++-- .../src/connectors/UniversalConnector.ts | 24 ++----------------- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/apps/laboratory/tests/siwe.spec.ts b/apps/laboratory/tests/siwe.spec.ts index a83ba1d827..4976122329 100644 --- a/apps/laboratory/tests/siwe.spec.ts +++ b/apps/laboratory/tests/siwe.spec.ts @@ -60,13 +60,15 @@ siweWalletTest('it should disconnect when cancel siwe from AppKit', async () => await walletValidator.expectSessionCard({ visible: false }) }) -// WARNING: refreshing on wagmi-siwe doesn't auto connect -siweWalletTest.skip('it should be authenticated when refresh page', async () => { +siweWalletTest('it should be authenticated when refresh page', async () => { await modalPage.qrCodeFlow(modalPage, walletPage) await modalValidator.expectConnected() await modalPage.page.reload() await modalValidator.expectConnected() await modalValidator.expectAuthenticated() + await modalPage.sign() + await walletPage.handleRequest({ accept: true }) + await modalValidator.expectAcceptedSign() }) siweWalletTest('it should be unauthenticated when disconnect', async () => { diff --git a/packages/adapters/wagmi/src/connectors/UniversalConnector.ts b/packages/adapters/wagmi/src/connectors/UniversalConnector.ts index 6b0e944551..5756b08d06 100644 --- a/packages/adapters/wagmi/src/connectors/UniversalConnector.ts +++ b/packages/adapters/wagmi/src/connectors/UniversalConnector.ts @@ -63,7 +63,6 @@ export function walletConnect( } let provider_: Provider | undefined - let providerPromise: Promise let accountsChanged: UniversalConnector['onAccountsChanged'] | undefined let chainChanged: UniversalConnector['onChainChanged'] | undefined @@ -209,28 +208,8 @@ export function walletConnect( return accounts as `0x${string}`[] }, async getProvider({ chainId } = {}) { - async function initProvider() { - const optionalChains = caipNetworks.map(x => Number(x.id)) - - if (!optionalChains.length) { - return undefined - } - - const provider = await appKit.getUniversalProvider() - - if (!provider) { - throw new Error('Provider not found') - } - - return provider - } - if (!provider_) { - if (!providerPromise) { - providerPromise = initProvider() - } - provider_ = await providerPromise - provider_?.events.setMaxListeners(Number.POSITIVE_INFINITY) + provider_ = await appKit.getUniversalProvider() } const currentChainId = appKit.getCaipNetwork()?.id @@ -368,6 +347,7 @@ export function walletConnect( async onConnect(connectInfo) { const chainId = Number(connectInfo.chainId) const accounts = await this.getAccounts() + this.setRequestedChainsIds(caipNetworks.map(x => Number(x.id))) config.emitter.emit('connect', { accounts, chainId }) }, async onDisconnect(_error) { From ca6c626bcfde17791a5e777f32787401aff78813 Mon Sep 17 00:00:00 2001 From: Felipe Mendes Date: Wed, 20 Nov 2024 16:24:34 -0300 Subject: [PATCH 2/4] chore: add changeset --- .changeset/rude-wasps-shake.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .changeset/rude-wasps-shake.md diff --git a/.changeset/rude-wasps-shake.md b/.changeset/rude-wasps-shake.md new file mode 100644 index 0000000000..f3a5890aae --- /dev/null +++ b/.changeset/rude-wasps-shake.md @@ -0,0 +1,24 @@ +--- +'@apps/demo': patch +'@apps/gallery': patch +'@apps/laboratory': patch +'@reown/appkit-adapter-ethers': patch +'@reown/appkit-adapter-ethers5': patch +'@reown/appkit-adapter-polkadot': patch +'@reown/appkit-adapter-solana': patch +'@reown/appkit-adapter-wagmi': patch +'@reown/appkit': patch +'@reown/appkit-utils': patch +'@reown/appkit-cdn': patch +'@reown/appkit-common': patch +'@reown/appkit-core': patch +'@reown/appkit-experimental': patch +'@reown/appkit-polyfills': patch +'@reown/appkit-scaffold-ui': patch +'@reown/appkit-siwe': patch +'@reown/appkit-siwx': patch +'@reown/appkit-ui': patch +'@reown/appkit-wallet': patch +--- + +Fix wagmi not reconnecting with siwe on page refresh From a1ee4393697eeb687a4885a05f9f4ee139af3e6a Mon Sep 17 00:00:00 2001 From: Felipe Mendes Date: Wed, 20 Nov 2024 16:43:58 -0300 Subject: [PATCH 3/4] chore: readd removed setMaxListeners --- packages/adapters/wagmi/src/connectors/UniversalConnector.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/adapters/wagmi/src/connectors/UniversalConnector.ts b/packages/adapters/wagmi/src/connectors/UniversalConnector.ts index 5756b08d06..648c1ac6c1 100644 --- a/packages/adapters/wagmi/src/connectors/UniversalConnector.ts +++ b/packages/adapters/wagmi/src/connectors/UniversalConnector.ts @@ -212,6 +212,8 @@ export function walletConnect( provider_ = await appKit.getUniversalProvider() } + provider_?.events.setMaxListeners(Number.POSITIVE_INFINITY) + const currentChainId = appKit.getCaipNetwork()?.id if (chainId && currentChainId !== chainId) { From a9680352fddbbde54967559a04755206d5bab5e8 Mon Sep 17 00:00:00 2001 From: Felipe Mendes Date: Wed, 20 Nov 2024 16:53:29 -0300 Subject: [PATCH 4/4] test: fix test ending to be disconnected --- apps/laboratory/tests/siwe.spec.ts | 4 ++++ packages/adapters/wagmi/src/connectors/UniversalConnector.ts | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/laboratory/tests/siwe.spec.ts b/apps/laboratory/tests/siwe.spec.ts index 4976122329..7b429f0a33 100644 --- a/apps/laboratory/tests/siwe.spec.ts +++ b/apps/laboratory/tests/siwe.spec.ts @@ -69,6 +69,10 @@ siweWalletTest('it should be authenticated when refresh page', async () => { await modalPage.sign() await walletPage.handleRequest({ accept: true }) await modalValidator.expectAcceptedSign() + await modalPage.disconnect() + await modalValidator.expectDisconnected() + await modalValidator.expectUnauthenticated() + await walletValidator.expectSessionCard({ visible: false }) }) siweWalletTest('it should be unauthenticated when disconnect', async () => { diff --git a/packages/adapters/wagmi/src/connectors/UniversalConnector.ts b/packages/adapters/wagmi/src/connectors/UniversalConnector.ts index 648c1ac6c1..dc6143d72b 100644 --- a/packages/adapters/wagmi/src/connectors/UniversalConnector.ts +++ b/packages/adapters/wagmi/src/connectors/UniversalConnector.ts @@ -210,10 +210,9 @@ export function walletConnect( async getProvider({ chainId } = {}) { if (!provider_) { provider_ = await appKit.getUniversalProvider() + provider_?.events.setMaxListeners(Number.POSITIVE_INFINITY) } - provider_?.events.setMaxListeners(Number.POSITIVE_INFINITY) - const currentChainId = appKit.getCaipNetwork()?.id if (chainId && currentChainId !== chainId) {