From 2aee44f31cf1dcfd6449ae3b21e4c3663610f4b5 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Thu, 31 Jul 2014 12:37:47 -0700 Subject: [PATCH] paypro: refactor cached payment requests. --- js/controllers/send.js | 16 ++++------------ js/models/core/Wallet.js | 23 ++++++++++++++++------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/js/controllers/send.js b/js/controllers/send.js index a9d9995cf..ee280ee5d 100644 --- a/js/controllers/send.js +++ b/js/controllers/send.js @@ -94,18 +94,10 @@ angular.module('copayApp.controllers').controller('SendController', && copay.HDPath.parseBitcoinURI(address); if (uri && uri.merchant) { - var req = w.paymentRequests[uri.merchant]; - if (req) { - if (commentText) { - req.options.memo = commentText; - } - w.receivePaymentRequest(req.options, req.pr, done); - } else { - w.createPaymentTx({ - uri: uri.merchant, - memo: commentText - }, done); - } + w.createPaymentTx({ + uri: uri.merchant, + memo: commentText + }, done); } else { w.createTx(address, amount, commentText, done); } diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index d1295d1a2..6cd173c49 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -879,9 +879,18 @@ Wallet.prototype.createPaymentTx = function(options, cb) { } } + var req = this.paymentRequests[options.uri]; + if (req) { + req.options.memo = options.memo; + req.options.fetch = false; + delete this.paymentRequests[options.uri]; + this.receivePaymentRequest(req.options, req.pr, cb); + return; + } + return $http({ method: options.method || 'POST', - url: options.uri || options.url, + url: options.uri, headers: { 'Accept': PayPro.PAYMENT_REQUEST_CONTENT_TYPE + ', ' + PayPro.PAYMENT_ACK_CONTENT_TYPE, @@ -903,15 +912,19 @@ Wallet.prototype.createPaymentTx = function(options, cb) { Wallet.prototype.fetchPaymentTx = function(options, cb) { var self = this; + options = options || {}; if (typeof options === 'string') { options = { uri: options }; } options.uri = options.uri || options.url; options.fetch = true; - if (this.paymentRequests[options.uri]) { - return cb(null, this.paymentRequests[options.uri].merchantData); + + var req = this.paymentRequests[options.uri]; + if (req) { + return cb(null, req.merchantData); } + return this.createPaymentTx(options, function(err, merchantData, options, pr) { self.paymentRequests[options.uri] = { merchantData: merchantData, @@ -925,10 +938,6 @@ Wallet.prototype.fetchPaymentTx = function(options, cb) { Wallet.prototype.receivePaymentRequest = function(options, pr, cb) { var self = this; - if (this.paymentRequests[options.uri]) { - delete this.paymentRequests[options.uri]; - } - var ver = pr.get('payment_details_version'); var pki_type = pr.get('pki_type'); var pki_data = pr.get('pki_data');