diff --git a/public/views/walletHome.html b/public/views/walletHome.html index b589ea1ee..1ae3f96db 100644 --- a/public/views/walletHome.html +++ b/public/views/walletHome.html @@ -504,7 +504,7 @@ Cancel
- diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index 478efdc1f..4ec000ee4 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -23,6 +23,7 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi ret.addresses = []; ret.isMobile = isMobile.any(); ret.isWindowsPhoneApp = isMobile.Windows() && isCordova; + ret.countDown = null; var vanillaScope = ret; var disableScannerListener = $rootScope.$on('dataScanned', function(event, data) { @@ -304,6 +305,7 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi // only determined by the tx.message this.openTxpModal = function(tx, copayers, isGlidera) { $rootScope.modalOpened = true; + var self = this; var fc = profileService.focusedClient; var currentSpendUnconfirmed = configWallet.spendUnconfirmed; var ModalInstanceCtrl = function($scope, $modalInstance) { @@ -346,18 +348,23 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi function paymentTimeControl(expirationTime) { $scope.paymentExpired = false; - var countDown; setExpirationTime(); - countDown = $interval(function() { + + self.countDown = $interval(function() { setExpirationTime(); }, 1000); function setExpirationTime() { - if (moment().isAfter(expirationTime * 1000)) { + var now = Math.floor(Date.now() / 1000); + if (now > expirationTime) { $scope.paymentExpired = true; - if (countDown) $interval.cancel(countDown); + if (self.countDown) $interval.cancel(self.countDown); + return; } - $scope.expires = moment(expirationTime * 1000).fromNow(); + var totalSecs = expirationTime - now; + var m = Math.floor(totalSecs / 60); + var s = totalSecs % 60; + $scope.expires = ('0' + m).slice(-2) + ":" + ('0' + s).slice(-2); }; }; @@ -994,6 +1001,7 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi this.resetForm = function() { this.resetError(); + if (this.countDown) $interval.cancel(this.countDown); this._paypro = null; this.lockedCurrentFeePerKb = null; @@ -1114,25 +1122,31 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi function _paymentTimeControl(expirationTime) { self.paymentExpired = false; - var countDown; setExpirationTime(); - countDown = $interval(function() { + + self.countDown = $interval(function() { setExpirationTime(); }, 1000); function setExpirationTime() { - if (moment().isAfter(expirationTime * 1000)) { - setExpiredPaymentValues(); - if (countDown) $interval.cancel(countDown); + var now = Math.floor(Date.now() / 1000); + if (now > expirationTime) { + setExpiredValues(); + return; } - self.remainingTimeStr = moment(expirationTime * 1000).fromNow(); + + var totalSecs = expirationTime - now; + var m = Math.floor(totalSecs / 60); + var s = totalSecs % 60; + self.remainingTimeStr = ('0' + m).slice(-2) + ":" + ('0' + s).slice(-2); }; - function setExpiredPaymentValues() { + function setExpiredValues() { self.paymentExpired = true; self.remainingTimeStr = null; self._paypro = null; self.error = gettext('Cannot sign: The payment request has expired'); + if (self.countDown) $interval.cancel(self.countDown); }; };