From 9fddde615ac82614bbd32f2c2136379800daec66 Mon Sep 17 00:00:00 2001 From: matiu Date: Fri, 15 Sep 2017 10:22:51 -0300 Subject: [PATCH] better "insufficient funds" message" --- src/js/controllers/confirm.js | 7 ++--- src/js/services/incomingData.js | 45 +++++++++++++++++++++------------ www/views/confirm.html | 4 +-- 3 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js index 174531476..6db51ac95 100644 --- a/src/js/controllers/confirm.js +++ b/src/js/controllers/confirm.js @@ -58,9 +58,10 @@ angular.module('copayApp.controllers').controller('confirmController', function( }); }; - function setNoWallet(msg) { + function setNoWallet(msg, criticalError) { $scope.wallet = null; $scope.noWalletMessage = msg; + $scope.criticalError = criticalError; $log.warn('Not ready to make the payment:' + msg); $timeout(function() { $scope.$apply(); @@ -81,7 +82,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( }); if (!$scope.wallets || !$scope.wallets.length) { - setNoWallet(gettextCatalog.getString('No wallets available')); + setNoWallet(gettextCatalog.getString('No wallets available'), true); return cb(); } @@ -110,7 +111,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( return cb('Could not update any wallet'); if (lodash.isEmpty(filteredWallets)) { - setNoWallet(gettextCatalog.getString('Insufficient funds')); + setNoWallet(gettextCatalog.getString('Insufficient funds'), true); } $scope.wallets = lodash.clone(filteredWallets); return cb(); diff --git a/src/js/services/incomingData.js b/src/js/services/incomingData.js index 82d0510a4..fcfbd94ec 100644 --- a/src/js/services/incomingData.js +++ b/src/js/services/incomingData.js @@ -84,14 +84,9 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat data = sanitizeUri(data); - // Bitcoin or Bitcoin Cash URL - if ((/^bitcoin(cash)?:/).exec(data)) { - var coin = 'btc'; - if ((/^bitcoincash:/).exec(data)) { - coin = 'bch'; - data = data.replace(/bitcoincash:/, 'bitcoin:'); - } - if (bitcore.URI.isValid(data)) { + // Bitcoin URL + if (bitcore.URI.isValid(data)) { + var coin = 'btc'; var parsed = new bitcore.URI(data); var addr = parsed.address ? parsed.address.toString() : ''; @@ -111,11 +106,30 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat } return true; - } else { - $log.error('Invalid Bitcoin URL'); - return false; - } + } else if (bitcoreCash.URI.isValid(data)) { + var coin = 'bch'; + var parsed = new bitcoreCash.URI(data); + var addr = parsed.address ? parsed.address.toString() : ''; + var message = parsed.message; + + var amount = parsed.amount ? parsed.amount : ''; + + // paypro not yet supported on cash + if (parsed.r) { + payproService.getPayProDetails(parsed.r, function(err, details) { + if (err) { + if (addr && amount) + goSend(addr, amount, message, coin); + else + popupService.showAlert(gettextCatalog.getString('Error'), err); + } + handlePayPro(details, coin); + }); + } else { + goSend(addr, amount, message, coin); + } + return true; // Plain URL } else if (/^https?:\/\//.test(data)) { @@ -259,9 +273,7 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat }); } } - return false; - }; function goToAmountPage(toAddress, coin) { @@ -277,12 +289,13 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat }, 100); } - function handlePayPro(payProDetails) { + function handlePayPro(payProDetails, coin) { var stateParams = { toAmount: payProDetails.amount, toAddress: payProDetails.toAddress, description: payProDetails.memo, - paypro: payProDetails + paypro: payProDetails, + coin: coin, }; scannerService.pausePreview(); $state.go('tabs.send', {}, { diff --git a/www/views/confirm.html b/www/views/confirm.html index 85f18e130..da6aca0f8 100644 --- a/www/views/confirm.html +++ b/www/views/confirm.html @@ -9,7 +9,7 @@
-
+
Sending @@ -27,7 +27,7 @@ Expired
-
+
To