From a0599d27bc1a2751286cc027db79c68a824d1107 Mon Sep 17 00:00:00 2001 From: Ryan Tharp Date: Wed, 29 Jan 2020 02:49:50 -0800 Subject: [PATCH] get latest version through snode proxy, remove clearfix from ExpiredAlertBanner --- js/expire.js | 66 +++++++++++++++++++++++++++++++++--------- js/views/inbox_view.js | 14 +++++---- 2 files changed, 61 insertions(+), 19 deletions(-) diff --git a/js/expire.js b/js/expire.js index 9caff73c1..b5af3bda5 100644 --- a/js/expire.js +++ b/js/expire.js @@ -1,22 +1,62 @@ +/* global LokiAppDotNetServerAPI, LokiFileServerAPI, semver, log */ // eslint-disable-next-line func-names (function() { 'use strict'; - let BUILD_EXPIRATION = 0; - try { - BUILD_EXPIRATION = parseInt(window.getExpiration(), 10); - if (BUILD_EXPIRATION) { - window.log.info( - 'Build expires: ', - new Date(BUILD_EXPIRATION).toISOString() - ); + // hold last result + let expiredVersion = null; + + window.tokenlessFileServerAdnAPI = new LokiAppDotNetServerAPI( + '', // no pubkey needed + window.getDefaultFileServer() + ); + window.tokenlessFileServerAdnAPI.pubKey = window.Signal.Crypto.base64ToArrayBuffer( + LokiFileServerAPI.secureRpcPubKey + ); + + const checkForUpgrades = async () => { + const response = await window.tokenlessFileServerAdnAPI.serverRequest( + 'loki/v1/version/client/desktop' + ); + if (response && response.response) { + const latestVer = semver.clean(response.response.data[0][0]); + 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); + } + } + } + } else { + // give it a minute + log.warn('Could not check to see if newer version is available'); + setTimeout(async () => { + await checkForUpgrades(); + }, 60 * 1000); // wait a minute } - } catch (e) { - // nothing - } + // no message logged means serverRequest never returned... + }; + checkForUpgrades(); window.extension = window.extension || {}; - window.extension.expired = () => - BUILD_EXPIRATION && Date.now() > BUILD_EXPIRATION; + window.extension.expired = cb => { + if (expiredVersion === null) { + // just give it another second + log.info('Delaying expire banner determination for 1s'); + setTimeout(() => { + window.extension.expired(cb); + }, 1000); + return; + } + // yes we know + cb(expiredVersion); + }; })(); diff --git a/js/views/inbox_view.js b/js/views/inbox_view.js index f0a5eab57..dbdaaf583 100644 --- a/js/views/inbox_view.js +++ b/js/views/inbox_view.js @@ -156,11 +156,13 @@ .find('.network-status-container') .append(this.networkStatusView.render().el); - if (extension.expired()) { - const banner = new Whisper.ExpiredAlertBanner().render(); - banner.$el.prependTo(this.$el); - this.$el.addClass('expired'); - } + extension.expired((expired) => { + if (expired) { + const banner = new Whisper.ExpiredAlertBanner().render(); + banner.$el.prependTo(this.$el); + this.$el.addClass('expired'); + } + }); // FIXME: Fix this for new react views this.updateInboxSectionUnread(); @@ -408,7 +410,7 @@ Whisper.ExpiredAlertBanner = Whisper.View.extend({ templateName: 'expired_alert', - className: 'expiredAlert clearfix', + className: 'expiredAlert', render_attributes() { return { expiredWarning: i18n('expiredWarning'),