diff --git a/packages/appkit/src/views/w3m-connecting-view/index.tsx b/packages/appkit/src/views/w3m-connecting-view/index.tsx index 2dc718b0..a6e5cc17 100644 --- a/packages/appkit/src/views/w3m-connecting-view/index.tsx +++ b/packages/appkit/src/views/w3m-connecting-view/index.tsx @@ -1,5 +1,5 @@ import { useSnapshot } from 'valtio'; -import { useEffect, useLayoutEffect, useState } from 'react'; +import { useEffect, useLayoutEffect, useRef, useState } from 'react'; import { ErrorUtil, type Platform } from '@reown/appkit-common-react-native'; import { WcController, @@ -22,7 +22,7 @@ export function ConnectingView() { const { connect } = useInternalAppKit(); const { installed } = useSnapshot(ApiController.state); const { data } = RouterController.state; - const [lastRetry, setLastRetry] = useState(Date.now()); + const lastRetryRef = useRef(Date.now()); const isQr = !data?.wallet; const isInstalled = !!installed?.find(wallet => wallet.id === data?.wallet?.id); @@ -30,15 +30,15 @@ export function ConnectingView() { const [platforms, setPlatforms] = useState([]); const onRetry = () => { - if (CoreHelperUtil.isAllowedRetry(lastRetry)) { - setLastRetry(Date.now()); + if (CoreHelperUtil.isAllowedRetry(lastRetryRef.current)) { + lastRetryRef.current = Date.now(); initializeConnection(true); } else { SnackController.showError('Please wait a second before retrying'); } }; - const initializeConnection = async (retry = false, retryTimestamp?: number) => { + const initializeConnection = async (retry = false) => { try { const { wcPairingExpiry } = WcController.state; const { data: routeData } = RouterController.state; @@ -73,11 +73,9 @@ export function ConnectingView() { } }); - const currentRetryTime = retryTimestamp ?? lastRetry; - if (isQr && CoreHelperUtil.isAllowedRetry(currentRetryTime)) { - const newRetryTime = Date.now(); - setLastRetry(newRetryTime); - initializeConnection(true, newRetryTime); + if (isQr && CoreHelperUtil.isAllowedRetry(lastRetryRef.current)) { + lastRetryRef.current = Date.now(); + initializeConnection(true); } } }; @@ -107,7 +105,7 @@ export function ConnectingView() { }, [data, isInstalled]); useEffect(() => { - initializeConnection(); + initializeConnection(true); let _interval: NodeJS.Timeout; // Check if the pairing expired every 10 seconds. If expired, it will create a new uri.