diff --git a/package.json b/package.json index e474ad514..524e9b58b 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "angular-mocks": "1.4.10", "bezier-easing": "^2.0.3", "bhttp": "^1.2.1", - "bitcore-wallet-client": "4.2.1", + "bitcore-wallet-client": "4.3.1", "bower": "^1.7.9", "chai": "^3.5.0", "cordova": "5.4.1", diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js index 77cd8b4c9..d8dc250c0 100644 --- a/src/js/controllers/confirm.js +++ b/src/js/controllers/confirm.js @@ -297,7 +297,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( var config = configService.getSync(); var spendingPassEnabled = walletService.isEncrypted(wallet); - var touchIdEnabled = config.touchIdFor && !config.touchIdFor[wallet.id]; + var touchIdEnabled = config.touchIdFor && config.touchIdFor[wallet.id]; var isCordova = $scope.isCordova; var bigAmount = parseFloat(txFormatService.formatToUSD(txp.amount)) > 20; var message = gettextCatalog.getString('Sending {{amountStr}} from your {{name}} wallet', { @@ -308,17 +308,20 @@ angular.module('copayApp.controllers').controller('confirmController', function( var cancelText = gettextCatalog.getString('Cancel'); if (!spendingPassEnabled && !touchIdEnabled) { - if (isCordova && bigAmount) { - popupService.showConfirm(null, message, okText, cancelText, function(ok) { - if (!ok) { - $scope.sendStatus = ''; - $timeout(function() { - $scope.$apply(); - }); - return; - } - publishAndSign(wallet, txp, onSendStatusChange); - }); + if (isCordova) { + if (bigAmount) { + popupService.showConfirm(null, message, okText, cancelText, function(ok) { + if (!ok) { + $scope.sendStatus = ''; + $timeout(function() { + $scope.$apply(); + }); + return; + } + publishAndSign(wallet, txp, onSendStatusChange); + }); + } + else publishAndSign(wallet, txp, onSendStatusChange); } else { popupService.showConfirm(null, message, okText, cancelText, function(ok) { diff --git a/src/js/controllers/modals/txDetails.js b/src/js/controllers/modals/txDetails.js index a77a95b26..adb7ddda6 100644 --- a/src/js/controllers/modals/txDetails.js +++ b/src/js/controllers/modals/txDetails.js @@ -27,16 +27,26 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio }; function updateMemo() { - wallet.getTxNote({ - txid: $scope.btx.txid - }, function(err, note) { - if (err || !note) { - $log.debug(gettextCatalog.getString('Could not fetch transaction note')); + walletService.getTxNote(wallet, $scope.btx.txid, function(err, note) { + if (err) { + $log.warn('Could not fetch transaction note ' + err); return; } - $scope.note = note; - $timeout(function() { - $scope.$apply(); + + if (!note) return; + + $scope.btx.note = note; + + walletService.getTx(wallet, $scope.btx.txid, function(err, tx) { + if (err) { + $log.error(err); + return; + } + + tx.note = note; + $timeout(function() { + $scope.$apply(); + }); }); }); }; @@ -91,19 +101,13 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio body: text }; - wallet.editTxNote(args, function(err) { + walletService.editTxNote(wallet, args, function(err, res) { if (err) { - $log.debug('Could not save tx comment'); + $log.debug('Could not save tx comment ' + err); return; } // This is only to refresh the current screen data - $scope.btx.note = null; - if (args.body) { - $scope.btx.note = {}; - $scope.btx.note.body = text; - $scope.btx.note.editedByName = wallet.credentials.copayerName; - $scope.btx.note.editedOn = Math.floor(Date.now() / 1000); - } + updateMemo(); $scope.btx.searcheableString = null; $timeout(function() { $scope.$apply(); diff --git a/src/js/controllers/tab-send.js b/src/js/controllers/tab-send.js index 9636fa305..8c74feb78 100644 --- a/src/js/controllers/tab-send.js +++ b/src/js/controllers/tab-send.js @@ -106,7 +106,7 @@ angular.module('copayApp.controllers').controller('tabSendController', function( var updateHasFunds = function() { - $scope.hasFunds = null; + $scope.hasFunds = true; var wallets = profileService.getWallets({ onlyComplete: true, @@ -114,6 +114,9 @@ angular.module('copayApp.controllers').controller('tabSendController', function( if (!wallets || !wallets.length) { $scope.hasFunds = false; + $timeout(function() { + $scope.$apply(); + }); } var index = 0; @@ -124,13 +127,16 @@ angular.module('copayApp.controllers').controller('tabSendController', function( $log.error(err); return; } - - if (status.availableBalanceSat) { + if (status.availableBalanceSat && status.availableBalanceSat > 0) { $scope.hasFunds = true; } + else $scope.hasFunds = false; if (index == wallets.length) { $scope.hasFunds = $scope.hasFunds || false; } + $timeout(function() { + $scope.$apply(); + }) }); }); }; diff --git a/src/js/services/externalLinkService.js b/src/js/services/externalLinkService.js index e33bdd871..cc0a447fe 100644 --- a/src/js/services/externalLinkService.js +++ b/src/js/services/externalLinkService.js @@ -3,6 +3,17 @@ angular.module('copayApp.services').service('externalLinkService', function(platformInfo, nodeWebkitService, popupService, gettextCatalog) { this.open = function(url, optIn, title, desc, okText, cancelText) { + var old = $window.handleOpenURL; + + $window.handleOpenURL = function(url) { + // Ignore external URLs + $log.debug('Skip: ' + url); + }; + + $timeout(function() { + $window.handleOpenURL = old; + }, 500); + if (platformInfo.isNW) { nodeWebkitService.openExternalLink(url); } else { diff --git a/src/js/services/popupService.js b/src/js/services/popupService.js index 9045c7b2b..486039a3b 100644 --- a/src/js/services/popupService.js +++ b/src/js/services/popupService.js @@ -118,7 +118,7 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni this.showPrompt = function(title, message, opts, cb) { $log.warn(title + ": " + message); - if (isCordova) + if (isCordova && !opts.forceHTMLPrompt) _cordovaPrompt(title, message, opts, cb); else _ionicPrompt(title, message, opts, cb); diff --git a/src/js/services/uxLanguage.js b/src/js/services/uxLanguage.js index 92f527f73..2f9e76043 100644 --- a/src/js/services/uxLanguage.js +++ b/src/js/services/uxLanguage.js @@ -42,6 +42,8 @@ angular.module('copayApp.services') root._detect = function(cb) { + return cb('en'); //disable auto detection for release; + var userLang, androidLang; if (navigator && navigator.globalization) { diff --git a/src/js/services/walletService.js b/src/js/services/walletService.js index 0b0de6491..216df83d8 100644 --- a/src/js/services/walletService.js +++ b/src/js/services/walletService.js @@ -512,6 +512,12 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim }); }; + root.editTxNote = function(wallet, args, cb) { + wallet.editTxNote(args, function(err, res) { + return cb(err, res); + }); + }; + root.getTxp = function(wallet, txpid, cb) { wallet.getTx(txpid, function(err, txp) { if (err) return cb(err); @@ -821,7 +827,8 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim // An alert dialog var askPassword = function(name, title, cb) { var opts = { - inputType: 'password' + inputType: 'password', + forceHTMLPrompt: true }; popupService.showPrompt(title, name, opts, function(res) { if (!res) return cb(); @@ -961,7 +968,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim $rootScope.$emit('Local/TxAction', wallet.id); var type = root.getViewStatus(wallet, broadcastedTxp); - if(!customStatusHandler) { + if (!customStatusHandler) { root.openStatusModal(type, broadcastedTxp, function() {}); } @@ -972,7 +979,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim var type = root.getViewStatus(wallet, signedTxp); - if(!customStatusHandler) { + if (!customStatusHandler) { root.openStatusModal(type, signedTxp, function() {}); } diff --git a/www/views/preferencesAbout.html b/www/views/preferencesAbout.html index 72102c1ac..356dc74c4 100644 --- a/www/views/preferencesAbout.html +++ b/www/views/preferencesAbout.html @@ -30,11 +30,11 @@ Terms of Use - + Session log diff --git a/www/views/walletDetails.html b/www/views/walletDetails.html index c634c1ef8..371cfc392 100644 --- a/www/views/walletDetails.html +++ b/www/views/walletDetails.html @@ -130,7 +130,7 @@
-
+
+