From 5f231594b47ec5e37bcf47b0c543a94126290ea5 Mon Sep 17 00:00:00 2001 From: matiu Date: Fri, 15 Sep 2017 12:33:17 -0300 Subject: [PATCH] support legacy addresses for cash if bitcoincash: handler is used --- src/js/controllers/amount.js | 6 ++++- src/js/services/incomingData.js | 47 ++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/js/controllers/amount.js b/src/js/controllers/amount.js index c1b105068..575dbce5a 100644 --- a/src/js/controllers/amount.js +++ b/src/js/controllers/amount.js @@ -309,7 +309,11 @@ angular.module('copayApp.controllers').controller('amountController', function($ if (a) { $scope.alternativeAmount = txFormatService.formatAmount(a * unitToSatoshi, true); } else { - $scope.alternativeAmount = 'N/A'; //TODO + if (result) { + $scope.alternativeAmount = 'N/A'; + } else { + $scope.alternativeAmount = null; + } $scope.allowSend = false; } } else { diff --git a/src/js/services/incomingData.js b/src/js/services/incomingData.js index fcfbd94ec..ae7d97609 100644 --- a/src/js/services/incomingData.js +++ b/src/js/services/incomingData.js @@ -105,7 +105,7 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat goSend(addr, amount, message, coin); } return true; - + // Cash URI } else if (bitcoreCash.URI.isValid(data)) { var coin = 'bch'; var parsed = new bitcoreCash.URI(data); @@ -130,6 +130,51 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat goSend(addr, amount, message, coin); } return true; + + // Cash URI with bitcoin core address version number? + } else if (bitcore.URI.isValid(data.replace(/^bitcoincash:/,'bitcoin:'))) { + $log.debug('Handling bitcoincash URI with legacy address'); + var coin = 'bch'; + var parsed = new bitcore.URI(data.replace(/^bitcoincash:/,'bitcoin:')); + + var oldAddr = parsed.address ? parsed.address.toString() : ''; + if (!oldAddr) return false; + + var addr = ''; + + var a = bitcore.Address(oldAddr).toObject(); + addr = bitcoreCash.Address.fromObject(a).toString(); + + // Translate address + $log.debug('address transalated to:' + addr); + popupService.showConfirm( + gettextCatalog.getString('Bitcoin cash Payment'), + gettextCatalog.getString('Payment address was translated to new Bitcoin Cash address format: ' + addr), + gettextCatalog.getString('OK'), + gettextCatalog.getString('Cancel'), + function(ret) { + if (!ret) return false; + + 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)) {