From 80befb1dda5568984c04f412f44f3420d489583b Mon Sep 17 00:00:00 2001 From: yqrashawn Date: Wed, 30 Jun 2021 14:58:48 +0800 Subject: [PATCH] fix: double check before login --- src/useConfluxPortal.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/useConfluxPortal.js b/src/useConfluxPortal.js index d5b8e4a..519dc6b 100644 --- a/src/useConfluxPortal.js +++ b/src/useConfluxPortal.js @@ -31,12 +31,12 @@ export default function useConfluxPortal(tokenAddrs = []) { // NOTE: if portal is installed, there must be window.conflux here window.conflux ? window.localStorage.getItem("CFXJS_REACT_HOOK_PORTAL_ADDRESS_CACHE") || - undefined + undefined : null ); - const {chainId, networkId} = useChainNetId() - const [error,setError]=useState(null) + const { chainId, networkId } = useChainNetId() + const [error, setError] = useState(null) useEffectOnce(() => { window?.conflux?.send({ method: "cfx_accounts" }).then((accounts) => { @@ -53,19 +53,19 @@ export default function useConfluxPortal(tokenAddrs = []) { }); }); - const login = (fallbackFn) => { - if (!address) { - if (window?.conflux) - return window.conflux - .send('cfx_requestAccounts') - .then( - (addresses) => validAddresses(addresses) && setAddress(addresses[0]) - ) - .catch( - (error)=>setError(error) - ) - return typeof fallbackFn === "function" && fallbackFn(); - } + const login = async (fallbackFn) => { + if (!window?.conflux) return + const hasAddr = !!address && (await window.conflux.send('cfx_accounts')).length + if (hasAddr) return + return window.conflux + .send('cfx_requestAccounts') + .then( + (addresses) => validAddresses(addresses) && setAddress(addresses[0]) + ) + .catch( + (error) => setError(error) + ) + return typeof fallbackFn === "function" && fallbackFn(); }; const useEnsurePortalLogin = () => {