From 35476ce1ab81747c868461e2b8c681bc832a8933 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Tue, 29 Sep 2015 12:27:14 -0300 Subject: [PATCH 1/2] Adds non-backwards compatibility uri for payment protocol --- src/js/controllers/walletHome.js | 63 +++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index eae12254d..6078bde46 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -1019,32 +1019,51 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi return newUri; }; + function backwardCompatible(uri) { + var regex = /^bitcoin:\?r=[\w+]/; + var match = regex.exec(uri); + if (!match || match.length === 0) { + return false; + } else { + return decodeURIComponent(uri.replace('bitcoin:?r=', '')); + } + } + + var backwardCompatibleUri = backwardCompatible(uri); var satToUnit = 1 / this.unitToSatoshi; - uri = sanitizeUri(uri); - - if (!bitcore.URI.isValid(uri)) { - return uri; - } - var parsed = new bitcore.URI(uri); - - var addr = parsed.address ? parsed.address.toString() : ''; - var message = parsed.message; - - var amount = parsed.amount ? - (parsed.amount.toFixed(0) * satToUnit).toFixed(this.unitDecimals) : 0; - - - if (parsed.r) { - this.setFromPayPro(parsed.r, function(err) { - if (err && addr && amount) { - self.setForm(addr, amount, message); - return addr; + if (backwardCompatibleUri) { + this.setFromPayPro(backwardCompatibleUri, function(err) { + if (err) { + return err; } - }); + }); } else { - this.setForm(addr, amount, message); - return addr; + uri = sanitizeUri(uri); + + if (!bitcore.URI.isValid(uri)) { + return uri; + } + var parsed = new bitcore.URI(uri); + + var addr = parsed.address ? parsed.address.toString() : ''; + var message = parsed.message; + + var amount = parsed.amount ? + (parsed.amount.toFixed(0) * satToUnit).toFixed(this.unitDecimals) : 0; + + + if (parsed.r) { + this.setFromPayPro(parsed.r, function(err) { + if (err && addr && amount) { + self.setForm(addr, amount, message); + return addr; + } + }); + } else { + this.setForm(addr, amount, message); + return addr; + } } }; From e884b4e7d72f374f52c89ceb8fee78b82136755b Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Tue, 29 Sep 2015 12:51:08 -0300 Subject: [PATCH 2/2] Ref --- src/js/controllers/walletHome.js | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index 6078bde46..7d44d869b 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -1019,21 +1019,12 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi return newUri; }; - function backwardCompatible(uri) { - var regex = /^bitcoin:\?r=[\w+]/; - var match = regex.exec(uri); - if (!match || match.length === 0) { - return false; - } else { - return decodeURIComponent(uri.replace('bitcoin:?r=', '')); - } - } - - var backwardCompatibleUri = backwardCompatible(uri); var satToUnit = 1 / this.unitToSatoshi; - if (backwardCompatibleUri) { - this.setFromPayPro(backwardCompatibleUri, function(err) { + // URI extensions for Payment Protocol with non-backwards-compatible request + if ((/^bitcoin:\?r=[\w+]/).exec(uri)) { + uri = decodeURIComponent(uri.replace('bitcoin:?r=', '')); + this.setFromPayPro(uri, function(err) { if (err) { return err; }