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 @@