From 6c73fa99e25b91e16dc41aeabdeef88d7df84fb5 Mon Sep 17 00:00:00 2001 From: Ryan Tharp Date: Wed, 5 Feb 2020 01:06:23 -0800 Subject: [PATCH] extension.expiredStatus(), adjustable timers, improve guards --- js/expire.js | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/js/expire.js b/js/expire.js index ece6938b4..32f9555fc 100644 --- a/js/expire.js +++ b/js/expire.js @@ -14,12 +14,19 @@ LokiFileServerAPI.secureRpcPubKey ); + let nextWaitSeconds = 1; const checkForUpgrades = async () => { - const response = await window.tokenlessFileServerAdnAPI.serverRequest( + const result = await window.tokenlessFileServerAdnAPI.serverRequest( 'loki/v1/version/client/desktop' ); - if (response && response.response) { - const latestVer = semver.clean(response.response.data[0][0]); + if ( + result && + result.response && + result.response.data && + result.response.data.length && + result.response.data[0].length + ) { + const latestVer = semver.clean(result.response.data[0][0]); if (semver.valid(latestVer)) { const ourVersion = window.getVersion(); if (latestVer === ourVersion) { @@ -36,10 +43,11 @@ } } else { // give it a minute - log.warn('Could not check to see if newer version is available'); + log.warn('Could not check to see if newer version is available', result); + nextWaitSeconds = 60; setTimeout(async () => { await checkForUpgrades(); - }, 60 * 1000); // wait a minute + }, nextWaitSeconds * 1000); // wait a minute } // no message logged means serverRequest never returned... }; @@ -56,22 +64,33 @@ if (expiredVersion !== null) { return res(expiredVersion); } - log.info('Delaying sending checks for 1s, no version yet'); - setTimeout(waitForVersion, 1000); + log.info( + 'Delaying sending checks for', + nextWaitSeconds, + 's, no version yet' + ); + setTimeout(waitForVersion, nextWaitSeconds * 1000); return true; } waitForVersion(); return true; }; + // just get current status + window.extension.expiredStatus = () => expiredVersion; + // actually wait until we know for sure window.extension.expiredPromise = () => new Promise(resolveWhenReady); window.extension.expired = cb => { if (expiredVersion === null) { // just give it another second - log.info('Delaying expire banner determination for 1s'); + log.info( + 'Delaying expire banner determination for', + nextWaitSeconds, + 's' + ); setTimeout(() => { window.extension.expired(cb); - }, 1000); + }, nextWaitSeconds * 1000); return; } // yes we know