new version available
This commit is contained in:
parent
aab77c8fae
commit
5666649a2d
5 changed files with 104 additions and 1 deletions
|
|
@ -134,6 +134,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="release size-12" ng-show="newRelease && !index.isSearching" ng-click="$root.openExternalLink('https://github.com/bitpay/copay/releases/latest')">
|
||||||
|
<span>{{newRelease}}</span><i class="icon-arrow-right3 right size-18"></i>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="oh pr" ng-if="index.txps[0]" ng-show="!index.isSearching">
|
<div class="oh pr" ng-if="index.txps[0]" ng-show="!index.isSearching">
|
||||||
<h4 ng-show="index.requiresMultipleSignatures" class="title m0" translate>Payment Proposals</h4>
|
<h4 ng-show="index.requiresMultipleSignatures" class="title m0" translate>Payment Proposals</h4>
|
||||||
<h4 ng-show="!index.requiresMultipleSignatures" class="title m0" translate>Unsent transactions</h4>
|
<h4 ng-show="!index.requiresMultipleSignatures" class="title m0" translate>Unsent transactions</h4>
|
||||||
|
|
|
||||||
|
|
@ -596,6 +596,26 @@ ul.manage li {
|
||||||
padding-top: 0 !important;
|
padding-top: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.release {
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
background-color: #E9E9EC;
|
||||||
|
margin-top: -30px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
padding-top: 30px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
text-color: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.release span {
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.release i {
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
.tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4, .tab-bar h5, .tab-bar h6 {
|
.tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4, .tab-bar h5, .tab-bar h6 {
|
||||||
line-height: 2.7rem;
|
line-height: 2.7rem;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, bwcService, lodash, go, profileService, configService, isCordova, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, nodeWebkit, addonManager, isChromeApp, bwsError, txFormatService, uxLanguage, $state, glideraService, isMobile, addressbookService) {
|
angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, latestReleaseService, bwcService, pushNotificationsService, lodash, go, profileService, configService, isCordova, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, nodeWebkit, addonManager, isChromeApp, bwsError, txFormatService, uxLanguage, $state, glideraService, isMobile, addressbookService) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var SOFT_CONFIRMATION_LIMIT = 12;
|
var SOFT_CONFIRMATION_LIMIT = 12;
|
||||||
var errors = bwcService.getErrors();
|
var errors = bwcService.getErrors();
|
||||||
|
|
@ -46,6 +46,18 @@ angular.module('copayApp.controllers').controller('indexController', function($r
|
||||||
ret.tab = 'walletHome';
|
ret.tab = 'walletHome';
|
||||||
var vanillaScope = ret;
|
var vanillaScope = ret;
|
||||||
|
|
||||||
|
if (nodeWebkit.isDefined()) {
|
||||||
|
latestReleaseService.checkLatestRelease(function(err, newRelease) {
|
||||||
|
if (err) {
|
||||||
|
$log.warn(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newRelease)
|
||||||
|
$scope.newRelease = gettext('There is a new version of Copay. Please update');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function strip(number) {
|
function strip(number) {
|
||||||
return (parseFloat(number.toPrecision(12)));
|
return (parseFloat(number.toPrecision(12)));
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,10 @@ angular.module('copayApp.services').factory('configService', function(storageSer
|
||||||
url: 'https://insight.bitpay.com:443/api/rates',
|
url: 'https://insight.bitpay.com:443/api/rates',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
release: {
|
||||||
|
url: 'https://api.github.com/repos/bitpay/copay/releases/latest'
|
||||||
|
},
|
||||||
|
|
||||||
pushNotifications: {
|
pushNotifications: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
config: {
|
config: {
|
||||||
|
|
|
||||||
63
src/js/services/latestReleaseService.js
Normal file
63
src/js/services/latestReleaseService.js
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
'use strict';
|
||||||
|
angular.module('copayApp.services')
|
||||||
|
.factory('latestReleaseService', function latestReleaseServiceFactory($log, $http, configService, gettext, nodeWebkit) {
|
||||||
|
|
||||||
|
var root = {};
|
||||||
|
|
||||||
|
root.checkLatestRelease = function(cb) {
|
||||||
|
var releaseURL = configService.getDefaults().release.url;
|
||||||
|
|
||||||
|
requestLatestRelease(releaseURL, function(err, release) {
|
||||||
|
if (err) return cb(err);
|
||||||
|
var currentVersion = window.version;
|
||||||
|
var latestVersion = release.data.tag_name;
|
||||||
|
|
||||||
|
if (!verifyTagFormat(currentVersion))
|
||||||
|
return cb('Cannot verify the format of version tag: ' + currentVersion);
|
||||||
|
if (!verifyTagFormat(latestVersion))
|
||||||
|
return cb('Cannot verify the format of latest release tag: ' + latestVersion);
|
||||||
|
|
||||||
|
var current = formatTagNumber(currentVersion);
|
||||||
|
var latest = formatTagNumber(latestVersion);
|
||||||
|
|
||||||
|
if (latest.major < current.major || (latest.major == current.major && latest.minor <= current.minor))
|
||||||
|
return cb(null, false);
|
||||||
|
|
||||||
|
$log.debug('A new version of Copay is available: ' + latestVersion);
|
||||||
|
return cb(null, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
function verifyTagFormat(tag) {
|
||||||
|
var regex = /^v?\d+\.\d+\.\d+$/i;
|
||||||
|
return regex.exec(tag);
|
||||||
|
};
|
||||||
|
|
||||||
|
function formatTagNumber(tag) {
|
||||||
|
var formattedNumber = tag.replace(/^v/i, '').split('.');
|
||||||
|
return {
|
||||||
|
major: +formattedNumber[0],
|
||||||
|
minor: +formattedNumber[1],
|
||||||
|
patch: +formattedNumber[2]
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function requestLatestRelease(releaseURL, cb) {
|
||||||
|
$log.debug('Retrieving latest relsease information...');
|
||||||
|
|
||||||
|
var request = {
|
||||||
|
url: releaseURL,
|
||||||
|
method: 'GET',
|
||||||
|
json: true
|
||||||
|
};
|
||||||
|
|
||||||
|
$http(request).then(function(release) {
|
||||||
|
$log.debug('Latest release: ' + release.data.name);
|
||||||
|
return cb(null, release);
|
||||||
|
}, function(err) {
|
||||||
|
return cb('Cannot get the release information: ' + err);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return root;
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue