From c066c45560333a47dc0966d7f3fbff73ca556e00 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Fri, 27 Jan 2023 15:33:19 +0100 Subject: [PATCH] fix: prevent multiple pairing tracking calls (#1605) --- src/hooks/wallets/useOnboard.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index 682ec81043..dc68e00472 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -83,8 +83,18 @@ const trackWalletType = (wallet: ConnectedWallet) => { // Detect mobile devices const isMobile = () => /iPhone|iPad|iPod|Android/i.test(navigator.userAgent) +// `connectWallet` is called when connecting/switching wallets and on pairing `connect` event (when prev. session connects) +// This re-entrant lock prevents multiple `connectWallet`/tracking calls that would otherwise occur for pairing module +let isConnecting = false + // Wrapper that tracks/sets the last used wallet export const connectWallet = async (onboard: OnboardAPI, options?: Parameters[0]) => { + if (isConnecting) { + return + } + + isConnecting = true + // On mobile, automatically choose WalletConnect if (!options && isMobile()) { options = { @@ -96,6 +106,8 @@ export const connectWallet = async (onboard: OnboardAPI, options?: Parameters