Refactored Wallet#createTx
This commit is contained in:
parent
5ac5aa3c69
commit
152ab7aa44
4 changed files with 29 additions and 44 deletions
|
|
@ -116,7 +116,7 @@ angular.module('copayApp.controllers').controller('SendController',
|
||||||
|
|
||||||
var w = $rootScope.wallet;
|
var w = $rootScope.wallet;
|
||||||
|
|
||||||
function done(ntxid, merchantData) {
|
function done(err, ntxid, merchantData) {
|
||||||
// If user is granted the privilege of choosing
|
// If user is granted the privilege of choosing
|
||||||
// their own amount, add it to the tx.
|
// their own amount, add it to the tx.
|
||||||
if (merchantData && +merchantData.total === 0) {
|
if (merchantData && +merchantData.total === 0) {
|
||||||
|
|
|
||||||
|
|
@ -878,7 +878,6 @@ Wallet.prototype.sendAllTxProposals = function(recipients) {
|
||||||
*/
|
*/
|
||||||
Wallet.prototype.sendTxProposal = function(ntxid, recipients) {
|
Wallet.prototype.sendTxProposal = function(ntxid, recipients) {
|
||||||
preconditions.checkArgument(ntxid);
|
preconditions.checkArgument(ntxid);
|
||||||
|
|
||||||
log.debug('### SENDING txProposal ' + ntxid + ' TO:', recipients || 'All', this.txProposals);
|
log.debug('### SENDING txProposal ' + ntxid + ' TO:', recipients || 'All', this.txProposals);
|
||||||
this.send(recipients, {
|
this.send(recipients, {
|
||||||
type: 'txProposal',
|
type: 'txProposal',
|
||||||
|
|
@ -2035,24 +2034,6 @@ Wallet.prototype.removeTxWithSpentInputs = function(cb) {
|
||||||
Wallet.prototype.createTx = function(toAddress, amountSatStr, comment, opts, cb) {
|
Wallet.prototype.createTx = function(toAddress, amountSatStr, comment, opts, cb) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (_.isFunction(amountSatStr)) {
|
|
||||||
var cb = amountSatStr;
|
|
||||||
var merchant = toAddress;
|
|
||||||
return this.createPaymentTx({
|
|
||||||
uri: merchant
|
|
||||||
}, cb);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_.isFunction(comment)) {
|
|
||||||
var cb = comment;
|
|
||||||
var merchant = toAddress;
|
|
||||||
var comment = amountSatStr;
|
|
||||||
return this.createPaymentTx({
|
|
||||||
uri: merchant,
|
|
||||||
memo: comment
|
|
||||||
}, cb);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_.isFunction(opts)) {
|
if (_.isFunction(opts)) {
|
||||||
cb = opts;
|
cb = opts;
|
||||||
opts = {};
|
opts = {};
|
||||||
|
|
@ -2064,14 +2045,18 @@ Wallet.prototype.createTx = function(toAddress, amountSatStr, comment, opts, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.getUnspent(function(err, safeUnspent) {
|
this.getUnspent(function(err, safeUnspent) {
|
||||||
|
if (err) return cb(err);
|
||||||
|
|
||||||
var ntxid = self.createTxSync(toAddress, amountSatStr, comment, safeUnspent, opts);
|
var ntxid = self.createTxSync(toAddress, amountSatStr, comment, safeUnspent, opts);
|
||||||
if (ntxid) {
|
if (!ntxid) {
|
||||||
self.sendIndexes();
|
return cb(new Error('Error creating TX'));
|
||||||
self.sendTxProposal(ntxid);
|
|
||||||
self.store();
|
|
||||||
self.emit('txProposalsUpdated');
|
|
||||||
}
|
}
|
||||||
return cb(ntxid);
|
|
||||||
|
self.sendIndexes();
|
||||||
|
self.sendTxProposal(ntxid);
|
||||||
|
self.store();
|
||||||
|
self.emit('txProposalsUpdated');
|
||||||
|
return cb(null, ntxid);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -739,7 +739,7 @@ describe('PayPro (in Wallet) model', function() {
|
||||||
uri = address.split(/\s+/)[1];
|
uri = address.split(/\s+/)[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
w.createTx(uri, commentText, function(ntxid, merchantData) {
|
w.createPaymentTx({ uri: uri, memo: commentText }, function(ntxid, merchantData) {
|
||||||
if (w.isShared()) {
|
if (w.isShared()) {
|
||||||
should.exist(ntxid);
|
should.exist(ntxid);
|
||||||
should.exist(merchantData);
|
should.exist(merchantData);
|
||||||
|
|
@ -760,7 +760,7 @@ describe('PayPro (in Wallet) model', function() {
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
||||||
var commentText = 'Hello, server. I\'d like to make a payment.';
|
var commentText = 'Hello, server. I\'d like to make a payment.';
|
||||||
w.createTx(address, commentText, function(ntxid, merchantData) {
|
w.createPaymentTx({ uri: address, memo: commentText }, function(ntxid, merchantData) {
|
||||||
if (w.isShared()) {
|
if (w.isShared()) {
|
||||||
should.exist(ntxid);
|
should.exist(ntxid);
|
||||||
should.exist(merchantData);
|
should.exist(merchantData);
|
||||||
|
|
@ -780,7 +780,7 @@ describe('PayPro (in Wallet) model', function() {
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
||||||
var commentText = 'Hello, server. I\'d like to make a payment.';
|
var commentText = 'Hello, server. I\'d like to make a payment.';
|
||||||
w.createTx(address, commentText, function(ntxid, merchantData) {
|
w.createPaymentTx({ uri: address, memo: commentText }, function(ntxid, merchantData) {
|
||||||
should.exist(ntxid);
|
should.exist(ntxid);
|
||||||
should.exist(merchantData);
|
should.exist(merchantData);
|
||||||
|
|
||||||
|
|
@ -816,7 +816,7 @@ describe('PayPro (in Wallet) model', function() {
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
||||||
var commentText = 'Hello, server. I\'d like to make a payment.';
|
var commentText = 'Hello, server. I\'d like to make a payment.';
|
||||||
w.createTx(address, commentText, function(ntxid, merchantData) {
|
w.createPaymentTx({ uri: address, memo: commentText }, function(ntxid, merchantData) {
|
||||||
should.exist(ntxid);
|
should.exist(ntxid);
|
||||||
should.exist(merchantData);
|
should.exist(merchantData);
|
||||||
|
|
||||||
|
|
@ -843,7 +843,7 @@ describe('PayPro (in Wallet) model', function() {
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
||||||
var commentText = 'Hello, server. I\'d like to make a payment.';
|
var commentText = 'Hello, server. I\'d like to make a payment.';
|
||||||
w.createTx(address, commentText, function(ntxid, merchantData) {
|
w.createPaymentTx({ uri: address, memo: commentText }, function(ntxid, merchantData) {
|
||||||
should.exist(ntxid);
|
should.exist(ntxid);
|
||||||
should.exist(merchantData);
|
should.exist(merchantData);
|
||||||
|
|
||||||
|
|
@ -869,7 +869,7 @@ describe('PayPro (in Wallet) model', function() {
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
var address = 'bitcoin:2NBzZdFBoQymDgfzH2Pmnthser1E71MmU47?amount=0.00003&r=' + server.uri + '/request';
|
||||||
var commentText = 'Hello, server. I\'d like to make a payment.';
|
var commentText = 'Hello, server. I\'d like to make a payment.';
|
||||||
w.createTx(address, commentText, function(ntxid, merchantData) {
|
w.createPaymentTx({ uri: address, memo: commentText }, function(ntxid, merchantData) {
|
||||||
should.exist(ntxid);
|
should.exist(ntxid);
|
||||||
should.exist(merchantData);
|
should.exist(merchantData);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -676,7 +676,7 @@ describe('Wallet model', function() {
|
||||||
var w = cachedCreateW2();
|
var w = cachedCreateW2();
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
ntxid.length.should.equal(64);
|
ntxid.length.should.equal(64);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
@ -690,7 +690,7 @@ describe('Wallet model', function() {
|
||||||
var w = createW2([k2]);
|
var w = createW2([k2]);
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
w.on('txProposalsUpdated', function() {
|
w.on('txProposalsUpdated', function() {
|
||||||
w.getTxProposals()[0].signedByUs.should.equal(true);
|
w.getTxProposals()[0].signedByUs.should.equal(true);
|
||||||
w.getTxProposals()[0].rejectedByUs.should.equal(false);
|
w.getTxProposals()[0].rejectedByUs.should.equal(false);
|
||||||
|
|
@ -706,7 +706,7 @@ describe('Wallet model', function() {
|
||||||
var w = cachedCreateW2();
|
var w = cachedCreateW2();
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
(function() {
|
(function() {
|
||||||
w.reject(ntxid);
|
w.reject(ntxid);
|
||||||
}).should.throw('reject a signed');
|
}).should.throw('reject a signed');
|
||||||
|
|
@ -718,7 +718,7 @@ describe('Wallet model', function() {
|
||||||
var oldK = w.privateKey;
|
var oldK = w.privateKey;
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
var s = sinon.stub(w, 'getMyCopayerId').returns('213');
|
var s = sinon.stub(w, 'getMyCopayerId').returns('213');
|
||||||
Object.keys(w.txProposals.get(ntxid).rejectedBy).length.should.equal(0);
|
Object.keys(w.txProposals.get(ntxid).rejectedBy).length.should.equal(0);
|
||||||
w.reject(ntxid);
|
w.reject(ntxid);
|
||||||
|
|
@ -732,7 +732,7 @@ describe('Wallet model', function() {
|
||||||
var w = createW2(null, 1);
|
var w = createW2(null, 1);
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
w.sendTx(ntxid, function(txid) {
|
w.sendTx(ntxid, function(txid) {
|
||||||
txid.length.should.equal(64);
|
txid.length.should.equal(64);
|
||||||
done();
|
done();
|
||||||
|
|
@ -743,7 +743,7 @@ describe('Wallet model', function() {
|
||||||
var w = createW2(null, 1);
|
var w = createW2(null, 1);
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
var txp = w.txProposals.get(ntxid);
|
var txp = w.txProposals.get(ntxid);
|
||||||
// Assign fake builder
|
// Assign fake builder
|
||||||
txp.builder = new Builder();
|
txp.builder = new Builder();
|
||||||
|
|
@ -758,7 +758,7 @@ describe('Wallet model', function() {
|
||||||
var w = createW2(null, 1);
|
var w = createW2(null, 1);
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
sinon.stub(w.blockchain, 'broadcast').yields({statusCode: 303});
|
sinon.stub(w.blockchain, 'broadcast').yields({statusCode: 303});
|
||||||
var spyCheckSentTx = sinon.spy(w, '_checkSentTx');
|
var spyCheckSentTx = sinon.spy(w, '_checkSentTx');
|
||||||
w.sendTx(ntxid, function () {});
|
w.sendTx(ntxid, function () {});
|
||||||
|
|
@ -770,7 +770,7 @@ describe('Wallet model', function() {
|
||||||
var w = cachedCreateW2();
|
var w = cachedCreateW2();
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
w.sendTxProposal.bind(w).should.throw('Illegal Argument.');
|
w.sendTxProposal.bind(w).should.throw('Illegal Argument.');
|
||||||
(function() {
|
(function() {
|
||||||
w.sendTxProposal(ntxid);
|
w.sendTxProposal(ntxid);
|
||||||
|
|
@ -783,7 +783,7 @@ describe('Wallet model', function() {
|
||||||
var w = cachedCreateW2();
|
var w = cachedCreateW2();
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
w.sendAllTxProposals.bind(w).should.not.throw();
|
w.sendAllTxProposals.bind(w).should.not.throw();
|
||||||
(function() {
|
(function() {
|
||||||
w.sendAllTxProposals();
|
w.sendAllTxProposals();
|
||||||
|
|
@ -815,7 +815,7 @@ describe('Wallet model', function() {
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
chai.expect(w.getTxProposals().length).to.equal(0);
|
chai.expect(w.getTxProposals().length).to.equal(0);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
w.sendTxProposal(ntxid);
|
w.sendTxProposal(ntxid);
|
||||||
chai.expect(w.getTxProposals().length).to.equal(1);
|
chai.expect(w.getTxProposals().length).to.equal(1);
|
||||||
|
|
||||||
|
|
@ -840,7 +840,7 @@ describe('Wallet model', function() {
|
||||||
utxo[1].vout = 1;
|
utxo[1].vout = 1;
|
||||||
chai.expect(w.getTxProposals().length).to.equal(0);
|
chai.expect(w.getTxProposals().length).to.equal(0);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, '100000', null, function(ntxid) {
|
w.createTx(toAddress, '100000', null, function(err, ntxid) {
|
||||||
w.sendTxProposal(ntxid);
|
w.sendTxProposal(ntxid);
|
||||||
chai.expect(w.getTxProposals().length).to.equal(1);
|
chai.expect(w.getTxProposals().length).to.equal(1);
|
||||||
|
|
||||||
|
|
@ -862,7 +862,7 @@ describe('Wallet model', function() {
|
||||||
var utxo = createUTXO(w);
|
var utxo = createUTXO(w);
|
||||||
chai.expect(w.getTxProposals().length).to.equal(0);
|
chai.expect(w.getTxProposals().length).to.equal(0);
|
||||||
w.blockchain.fixUnspent(utxo);
|
w.blockchain.fixUnspent(utxo);
|
||||||
w.createTx(toAddress, amountSatStr, null, function(ntxid) {
|
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
|
||||||
w.sendTxProposal(ntxid);
|
w.sendTxProposal(ntxid);
|
||||||
chai.expect(w.getTxProposals().length).to.equal(1);
|
chai.expect(w.getTxProposals().length).to.equal(1);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue