From f6676db4d3698960d1015bffb0883d89340ee126 Mon Sep 17 00:00:00 2001 From: Josh Perez <60019601+josh-signal@users.noreply.github.com> Date: Mon, 15 May 2023 11:08:15 -0400 Subject: [PATCH] Use Promise.race instead so both promises do not resolve --- ts/state/smart/InstallScreen.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ts/state/smart/InstallScreen.tsx b/ts/state/smart/InstallScreen.tsx index 5d6c852496..5ffe2f5ece 100644 --- a/ts/state/smart/InstallScreen.tsx +++ b/ts/state/smart/InstallScreen.tsx @@ -167,6 +167,7 @@ export function SmartInstallScreen(): ReactElement { useEffect(() => { let hasCleanedUp = false; + const qrCodeResolution = explodePromise(); const accountManager = window.getAccountManager(); assertDev(accountManager, 'Expected an account manager'); @@ -175,6 +176,7 @@ export function SmartInstallScreen(): ReactElement { if (hasCleanedUp) { return; } + qrCodeResolution.resolve(); setProvisioningUrl(value); }; @@ -227,7 +229,8 @@ export function SmartInstallScreen(): ReactElement { ); const sleepMs = qrCodeBackOff.getAndIncrement(); log.info(`InstallScreen/getQRCode: race to ${sleepMs}ms`); - await pTimeout(qrCodePromise, sleepMs, sleepError); + await pTimeout(qrCodeResolution.promise, sleepMs, sleepError); + await qrCodePromise; window.IPC.removeSetupMenuItems(); } catch (error) {