You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
| /* global semver, log */
 | |
| // eslint-disable-next-line func-names
 | |
| (function() {
 | |
|   'use strict';
 | |
| 
 | |
|   // hold last result
 | |
|   let expiredVersion = null;
 | |
| 
 | |
|   let nextWaitSeconds = 5;
 | |
|   const checkForUpgrades = async () => {
 | |
|     try {
 | |
|       window.libsession.Utils.UserUtils.getOurPubKeyStrFromCache();
 | |
|     } catch (e) {
 | |
|       // give it a minute
 | |
|       log.warn('Could not check to see if newer version is available cause our pubkey is not set');
 | |
|       nextWaitSeconds = 60;
 | |
|       setTimeout(async () => {
 | |
|         await checkForUpgrades();
 | |
|       }, nextWaitSeconds * 1000); // wait a minute
 | |
|       return;
 | |
|     }
 | |
|     let latestVersionWithV;
 | |
|     try {
 | |
|       latestVersionWithV = await window.Fsv2.getLatestDesktopReleaseFileToFsV2();
 | |
|       if (!latestVersionWithV) {
 | |
|         throw new Error('Invalid latest version. Shceduling retry...');
 | |
|       }
 | |
|       const latestVer = semver.clean(latestVersionWithV);
 | |
|       if (semver.valid(latestVer)) {
 | |
|         const ourVersion = window.getVersion();
 | |
|         if (latestVer === ourVersion) {
 | |
|           log.info('You have the latest version', latestVer);
 | |
|           // change the following to true ot test/see expiration banner
 | |
|           expiredVersion = false;
 | |
|         } else {
 | |
|           // expire if latest is newer than current
 | |
|           expiredVersion = semver.gt(latestVer, ourVersion);
 | |
|           if (expiredVersion) {
 | |
|             log.info('There is a newer version available', latestVer);
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     } catch (e) {
 | |
|       window.log.warn('Failed to fetch latest version');
 | |
|       log.warn('Could not check to see if newer version is available', latestVersionWithV);
 | |
|     }
 | |
|     // wait an hour before retrying
 | |
|     // do this even if we did not get an error before (to be sure to pick up a new release even if
 | |
|     // another request told us we were up to date)
 | |
| 
 | |
|     nextWaitSeconds = 3600;
 | |
|     setTimeout(async () => {
 | |
|       await checkForUpgrades();
 | |
|     }, nextWaitSeconds * 1000);
 | |
|     // no message logged means serverRequest never returned...
 | |
|   };
 | |
| 
 | |
|   // don't wait for this to finish
 | |
|   checkForUpgrades();
 | |
| 
 | |
|   window.extension = window.extension || {};
 | |
| 
 | |
|   // eslint-disable-next-line no-unused-vars
 | |
|   const resolveWhenReady = (res, rej) => {
 | |
|     if (expiredVersion !== null) {
 | |
|       return res(expiredVersion);
 | |
|     }
 | |
|     function waitForVersion() {
 | |
|       if (expiredVersion !== null) {
 | |
|         return res(expiredVersion);
 | |
|       }
 | |
|       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 ${nextWaitSeconds}s`);
 | |
|       setTimeout(() => {
 | |
|         window.extension.expired(cb);
 | |
|       }, nextWaitSeconds * 1000);
 | |
|       return;
 | |
|     }
 | |
|     // yes we know
 | |
|     cb(expiredVersion);
 | |
|   };
 | |
| })();
 |