diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js
index 318fcece2..a7332cb76 100644
--- a/src/js/controllers/tab-home.js
+++ b/src/js/controllers/tab-home.js
@@ -43,20 +43,19 @@ angular.module('copayApp.controllers').controller('tabHomeController',
});
}
- if ($scope.isNW) {
- latestReleaseService.checkLatestRelease(function(err, newRelease) {
- if (err) {
- $log.warn(err);
- return;
- }
- if (newRelease) {
- $scope.newRelease = true;
- $scope.updateText = gettextCatalog.getString('There is a new version of {{appName}} available', {
- appName: $scope.name
- });
- }
- });
- }
+ latestReleaseService.checkLatestRelease(function(err, newReleaseData) {
+ if (err) {
+ $log.warn(err);
+ return;
+ }
+ if (newReleaseData) {
+ $scope.newRelease = true;
+ $scope.newReleaseText = gettextCatalog.getString('There is a new version of {{appName}} available', {
+ appName: $scope.name
+ });
+ $scope.newReleaseNotes = newReleaseData.releaseNotes;
+ }
+ });
};
function onEnter(event, data) {
diff --git a/src/js/services/latestReleaseService.js b/src/js/services/latestReleaseService.js
index 87aace87f..96614715d 100644
--- a/src/js/services/latestReleaseService.js
+++ b/src/js/services/latestReleaseService.js
@@ -1,16 +1,16 @@
'use strict';
angular.module('copayApp.services')
- .factory('latestReleaseService', function latestReleaseServiceFactory($log, $http, configService) {
+ .factory('latestReleaseService', function latestReleaseServiceFactory($log, $http, configService, platformInfo) {
var root = {};
root.checkLatestRelease = function(cb) {
var releaseURL = configService.getDefaults().release.url;
- requestLatestRelease(releaseURL, function(err, release) {
+ requestLatestRelease(releaseURL, function(err, releaseData) {
if (err) return cb(err);
var currentVersion = window.version;
- var latestVersion = release.data.tag_name;
+ var latestVersion = releaseData.tag_name;
if (!verifyTagFormat(currentVersion))
return cb('Cannot verify the format of version tag: ' + currentVersion);
@@ -20,30 +20,72 @@ angular.module('copayApp.services')
var current = formatTagNumber(currentVersion);
var latest = formatTagNumber(latestVersion);
- if (latest.major < current.major || (latest.major == current.major && latest.minor <= current.minor))
+ if (latest.major < current.major || (latest.major === current.major && latest.minor <= current.minor)) {
return cb(null, false);
+ }
+
+ var releaseSearchTerm = "";
+ if (platformInfo.isNW) { // XX SP: DESKTOP: Check if the latest release is already available for current OS
+ var platform = process.platform;
+ if (platform === "darwin") {
+ releaseSearchTerm = "osx";
+ } else if (platform === "win32") {
+ releaseSearchTerm = "win";
+ } else if (platform === "linux") {
+ releaseSearchTerm = "linux";
+ }
+ var foundNewVersion = false;
+ for (var i in releaseData.assets) {
+ if (releaseData.assets[i].name.indexOf(releaseSearchTerm) !== -1) {
+ foundNewVersion = true;
+ break;
+ }
+ }
+ }
$log.debug('A new version is available: ' + latestVersion);
- return cb(null, true);
+
+ //
+ var releaseNotes = false;
+ if (releaseData.body) {
+ var releaseLines = releaseData.body.split('\n');
+ for (var lineNum in releaseLines) {
+ if (releaseLines[lineNum].substring(0, 2) === "# ") {
+ releaseLines[lineNum] = ""+releaseLines[lineNum].substring(2)+"";
+ } else if (releaseLines[lineNum].substring(0, 2) === "- ") {
+ releaseLines[lineNum] = "• "+releaseLines[lineNum].substring(2);
+ }
+ }
+ releaseNotes = releaseLines.join('\n');
+ }
+
+ return cb(null, {latestVersion: latestVersion, releaseNotes: releaseNotes});
});
function verifyTagFormat(tag) {
- var regex = /^v?\d+\.\d+\.\d+$/i;
+ var regex = /^v?\d+\.\d+(\.\d+)?(-rc\d)?$/i;
return regex.exec(tag);
};
function formatTagNumber(tag) {
+ var label = false;
+ if (tag.split("-")[1]) { // Move postfixes like "-rc2" to a variable
+ label = tag.split("-")[1];
+ tag = tag.split("-")[0];
+ }
+
var formattedNumber = tag.replace(/^v/i, '').split('.');
return {
- major: +formattedNumber[0],
- minor: +formattedNumber[1],
- patch: +formattedNumber[2]
+ major: +(formattedNumber[0]?+formattedNumber[0]:0),
+ minor: +(formattedNumber[1]?+formattedNumber[1]:0),
+ patch: +(formattedNumber[2]?+formattedNumber[2]:0),
+ label: label /* XX SP: we can use this in a later stage (with for example 1.0.0-rc2 the value will be "rc2" and false if there is no label) */
};
};
};
function requestLatestRelease(releaseURL, cb) {
- $log.debug('Retrieving latest relsease information...');
+ $log.debug('Retrieving latest release information...');
var request = {
url: releaseURL,
@@ -53,7 +95,7 @@ angular.module('copayApp.services')
$http(request).then(function(release) {
$log.debug('Latest release: ' + release.data.name);
- return cb(null, release);
+ return cb(null, release.data);
}, function(err) {
return cb('Cannot get the release information: ' + err);
});
diff --git a/src/sass/views/tab-home.scss b/src/sass/views/tab-home.scss
index 55080ab7b..4cc5ce5ed 100644
--- a/src/sass/views/tab-home.scss
+++ b/src/sass/views/tab-home.scss
@@ -173,6 +173,11 @@
font-weight: 700;
color: #444;
}
+ .release-notes {
+ white-space: pre;
+ white-space: pre-line;
+ text-align: left;
+ }
.button {
width: 100%;
border: none;
diff --git a/www/views/tab-home.html b/www/views/tab-home.html
index 8ef922918..01182f09d 100644
--- a/www/views/tab-home.html
+++ b/www/views/tab-home.html
@@ -15,7 +15,9 @@
-