diff --git a/web/account/siwe.react.js b/web/account/siwe.react.js --- a/web/account/siwe.react.js +++ b/web/account/siwe.react.js @@ -84,20 +84,33 @@ const logInExtraInfo = useSelector(webLogInExtraInfoSelector); const [siweNonce, setSIWENonce] = React.useState(null); + const [ + hasSIWEButtonBeenClicked, + setHasSIWEButtonBeenClicked, + ] = React.useState(false); React.useEffect(() => { - if (!signer) { - setSIWENonce(null); - return; + if ( + !siweNonce && + getSIWENonceCallLoadingStatus !== 'loading' && + (signer || hasSIWEButtonBeenClicked) + ) { + dispatchActionPromise( + getSIWENonceActionTypes, + (async () => { + const response = await getSIWENonceCall(); + setSIWENonce(response); + })(), + ); } - dispatchActionPromise( - getSIWENonceActionTypes, - (async () => { - const response = await getSIWENonceCall(); - setSIWENonce(response); - })(), - ); - }, [dispatchActionPromise, getSIWENonceCall, signer]); + }, [ + dispatchActionPromise, + getSIWENonceCall, + getSIWENonceCallLoadingStatus, + hasSIWEButtonBeenClicked, + signer, + siweNonce, + ]); const siweButtonColor = React.useMemo( () => ({ backgroundColor: 'white', color: 'black' }), @@ -164,6 +177,7 @@ } const onSIWEButtonClick = React.useCallback(() => { + setHasSIWEButtonBeenClicked(true); openConnectModal && openConnectModal(); }, [openConnectModal]);