Adds bitcoincash URL support

This commit is contained in:
Gustavo Maximiliano Cortez 2017-09-08 16:55:04 -03:00
commit 823814817d
No known key found for this signature in database
GPG key ID: 15EDAD8D9F2EB1AF
8 changed files with 45 additions and 26 deletions

View file

@ -69,8 +69,8 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat
}, 100);
}
// data extensions for Payment Protocol with non-backwards-compatible request
if ((/^bitcoin:\?r=[\w+]/).exec(data)) {
data = decodeURIComponent(data.replace('bitcoin:?r=', ''));
if ((/^bitcoin[cash]*:\?r=[\w+]/).exec(data)) {
data = decodeURIComponent(data.replace(/bitcoin[cash]*:?r=/, ''));
$state.go('tabs.send', {}, {
'reload': true,
'notify': $state.current.name == 'tabs.send' ? false : true
@ -84,27 +84,38 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat
data = sanitizeUri(data);
// BIP21
if (bitcore.URI.isValid(data)) {
var parsed = new bitcore.URI(data);
var addr = parsed.address ? parsed.address.toString() : '';
var message = parsed.message;
var amount = parsed.amount ? parsed.amount : '';
var coin = parsed.extras && parsed.extras.coin ? parsed.extras.coin : '';
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);
} else handlePayPro(details);
});
} else {
goSend(addr, amount, message, coin);
// Bitcoin or Bitcoin Cash URL
if ((/^bitcoin[cash]*:/).exec(data)) {
var coin = 'btc';
if ((/^bitcoincash*:/).exec(data)) {
coin = 'bch';
data = data.replace(/bitcoincash*:/, 'bitcoin:');
}
console.log('[incomingData.js:93]', coin, data); //TODO/
if (bitcore.URI.isValid(data)) {
var parsed = new bitcore.URI(data);
var addr = parsed.address ? parsed.address.toString() : '';
var message = parsed.message;
var amount = parsed.amount ? parsed.amount : '';
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);
} else handlePayPro(details);
});
} else {
goSend(addr, amount, message, coin);
}
return true;
} else {
$log.error('Invalid Bitcoin URL');
return false;
}
return true;
// Plain URL
} else if (/^https?:\/\//.test(data)) {