Use Promise.race instead so both promises do not resolve
This commit is contained in:
@@ -167,6 +167,7 @@ export function SmartInstallScreen(): ReactElement {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let hasCleanedUp = false;
|
let hasCleanedUp = false;
|
||||||
|
const qrCodeResolution = explodePromise<void>();
|
||||||
|
|
||||||
const accountManager = window.getAccountManager();
|
const accountManager = window.getAccountManager();
|
||||||
assertDev(accountManager, 'Expected an account manager');
|
assertDev(accountManager, 'Expected an account manager');
|
||||||
@@ -175,6 +176,7 @@ export function SmartInstallScreen(): ReactElement {
|
|||||||
if (hasCleanedUp) {
|
if (hasCleanedUp) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
qrCodeResolution.resolve();
|
||||||
setProvisioningUrl(value);
|
setProvisioningUrl(value);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -227,7 +229,8 @@ export function SmartInstallScreen(): ReactElement {
|
|||||||
);
|
);
|
||||||
const sleepMs = qrCodeBackOff.getAndIncrement();
|
const sleepMs = qrCodeBackOff.getAndIncrement();
|
||||||
log.info(`InstallScreen/getQRCode: race to ${sleepMs}ms`);
|
log.info(`InstallScreen/getQRCode: race to ${sleepMs}ms`);
|
||||||
await pTimeout(qrCodePromise, sleepMs, sleepError);
|
await pTimeout(qrCodeResolution.promise, sleepMs, sleepError);
|
||||||
|
await qrCodePromise;
|
||||||
|
|
||||||
window.IPC.removeSetupMenuItems();
|
window.IPC.removeSetupMenuItems();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
Reference in New Issue
Block a user