Skip to content
Snippets Groups Projects

Resolve "auto notification about new release"

Merged Piotr Gawron requested to merge 961-auto-notification-about-new-release into master
6 files
+ 98
2
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -16,7 +16,11 @@ var UsersAdminPanel = require('./gui/admin/UsersAdminPanel');
// noinspection JSUnusedLocalSymbols
var logger = require('./logger');
var request = require('request');
var semver = require('semver');
var GuiUtils = require('./gui/leftPanel/GuiUtils');
var NetworkError = require('./NetworkError');
var GuiConnector = require('./GuiConnector');
/**
* Default constructor.
@@ -110,12 +114,15 @@ Admin.prototype.getElement = function () {
* @returns {Promise}
*/
Admin.prototype.init = function () {
var self = this;
var promises = [];
for (var i = 0; i < this._panels.length; i++) {
promises.push(this._panels[i].init());
for (var i = 0; i < self._panels.length; i++) {
promises.push(self._panels[i].init());
}
return Promise.all(promises).then(function () {
$(window).trigger('resize');
}).then(function () {
return self.checkAvailableVersion();
});
};
@@ -148,6 +155,64 @@ Admin.prototype.destroy = function () {
return Promise.all(promises);
};
/**
*
* @return {Promise<T>}
*/
Admin.prototype.checkAvailableVersion = function () {
var self = this;
var localVersion = semver.coerce(self.getConfiguration().getVersion());
return self.getLatestPublishedVersion().then(function (publishedVersion) {
if (semver.gt(publishedVersion, localVersion) > 0) {
GuiConnector.warn("New minerva version (" + publishedVersion + ") was released. Please upgrade your minerva instance or contact system administrator to do so.");
}
});
};
/**
*
* @return {Promise}
*/
Admin.prototype.getLatestPublishedVersion = function () {
return new Promise(function (resolve, reject) {
var url = "https://minerva-net.lcsb.uni.lu/proxy/?url=https://webdav-r3lab.uni.lu/public/minerva/";
request(url, function (error, response, body) {
if (error) {
reject(new NetworkError(error.message, {
content: body,
url: url
}));
} else if (response.statusCode !== 200) {
reject(new NetworkError(url + " rejected with status code: " + response.statusCode, {
content: body,
url: url,
statusCode: response.statusCode
}));
} else {
var content;
// for some reason sometimes result is an object not a string
if (typeof body === 'string' || body instanceof String) {
content = body;
} else {
content = JSON.stringify(body);
}
var re = /href="[\w.]+/g;
var result = content.match(re);
for (var i = result.length - 1; i >= 0; i--) {
result[i] = result[i].replace("href=\"", "");
if (!semver.valid(result[i])) {
logger.warn("Invalid version: " + result[i]);
result.splice(i, 1);
}
}
result.sort(semver.compare);
resolve(result[result.length - 1]);
}
});
});
};
/**
*
* @param {ServerConnector} serverConnector
Loading