From 5d6c89599ac803cd0b1616f76aafd28b36376466 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Sun, 15 Feb 2015 13:03:48 -0300 Subject: [PATCH] bug fixes --- app.js | 2 +- bit-wallet/bit-reject | 21 +++++---------------- bit-wallet/bit-rm | 24 +++++------------------- bit-wallet/bit-sign | 21 +++++---------------- bit-wallet/common.js | 26 +++++++++++++++++++++++--- lib/client/API.js | 4 ++-- lib/server.js | 8 ++++---- 7 files changed, 45 insertions(+), 61 deletions(-) diff --git a/app.js b/app.js index ceb23df..99eba80 100644 --- a/app.js +++ b/app.js @@ -217,7 +217,7 @@ router.post('/v1/txproposals/:id/rejections', function(req, res) { router.delete('/v1/txproposals/:id/', function(req, res) { getServerWithAuth(req, res, function(server) { req.body.txProposalId = req.params['id']; - server.removePendingTx(req.body, function(err, txp) { + server.removePendingTx(req.body, function(err) { if (err) return returnError(err, res, req); res.end(); }); diff --git a/bit-wallet/bit-reject b/bit-wallet/bit-reject index 4e2f127..a2d7a9e 100644 --- a/bit-wallet/bit-reject +++ b/bit-wallet/bit-reject @@ -22,30 +22,19 @@ var cli = new Client({ filename: program.config }); -cli.getTxProposals({}, function(err, x) { +cli.getTxProposals({}, function(err, txps) { common.die(err); if (program.verbose) - console.log('* Raw Server Response:\n', x); //TODO + console.log('* Raw Server Response:\n', txps); //TODO - var txps = _.filter(x, function(x) { - return _.endsWith(common.shortID(x.id), txpid); - }); + var txp = common.findOneTxProposal(txps, txpid); - if (!txps.length) - common.die('Could not find TX Proposal:' + txpid); - - if (txps.length > 1) - common.die('More than one TX Proposals match:' + txpid + ' : ' + _.map(txps, function(x) { - return x.id; - }).join(' '));; - - var txp = txps[0]; - cli.rejectTxProposal(txp, reason, function(err, x) { + cli.rejectTxProposal(txp, reason, function(err, tx) { common.die(err); if (program.verbose) - console.log('* Raw Server Response:\n', x); //TODO + console.log('* Raw Server Response:\n', tx); //TODO console.log('Transaction rejected.'); }); diff --git a/bit-wallet/bit-rm b/bit-wallet/bit-rm index 960821c..45902eb 100644 --- a/bit-wallet/bit-rm +++ b/bit-wallet/bit-rm @@ -22,31 +22,17 @@ var cli = new Client({ filename: program.config }); -cli.getTxProposals({}, function(err, x) { +cli.getTxProposals({}, function(err, txps) { common.die(err); if (program.verbose) - console.log('* Raw Server Response:\n', x); //TODO + console.log('* Raw Server Response:\n', txps); //TODO - var txps = _.filter(x, function(x) { - return _.endsWith(common.shortID(x.id), txpid); - }); + var txp = common.findOneTxProposal(txps, txpid); - if (!txps.length) - common.die('Could not find TX Proposal:' + txpid); - - if (txps.length > 1) - common.die('More than one TX Proposals match:' + txpid + ' : ' + _.map(txps, function(x) { - return x.id; - }).join(' '));; - - var txp = txps[0]; - cli.removeTxProposal(txp, function(err, x) { + cli.removeTxProposal(txp, function(err) { common.die(err); - if (program.verbose) - console.log('* Raw Server Response:\n', x); //TODO - - console.log('Transaction rejected.'); + console.log('Transaction removed.'); }); }); diff --git a/bit-wallet/bit-sign b/bit-wallet/bit-sign index 68289a6..f4d8348 100755 --- a/bit-wallet/bit-sign +++ b/bit-wallet/bit-sign @@ -22,30 +22,19 @@ var cli = new ClientLib({ filename: program.config }); -cli.getTxProposals({}, function(err, x) { +cli.getTxProposals({}, function(err, txps) { common.die(err); if (program.verbose) - console.log('* Raw Server Response:\n', x); //TODO + console.log('* Raw Server Response:\n', txps); //TODO - var txps = _.filter(x, function(x) { - return _.endsWith(common.shortID(x.id), txpid); - }); + var txp = common.findOneTxProposal(txps, txpid); - if (!txps.length) - common.die('Could not find TX Proposal:' + txpid); - - if (txps.length > 1) - common.die('More than one TX Proposals match:' + txpid + ' : ' + _.map(txps, function(x) { - return x.id; - }).join(' '));; - - var txp = txps[0]; - cli.signTxProposal(txp, function(err, x) { + cli.signTxProposal(txp, function(err, tx) { common.die(err); if (program.verbose) - console.log('* Raw Server Response:\n', x); //TODO + console.log('* Raw Server Response:\n', tx); //TODO console.log('Transaction signed.'); }); diff --git a/bit-wallet/common.js b/bit-wallet/common.js index 5fe7337..8671e0d 100644 --- a/bit-wallet/common.js +++ b/bit-wallet/common.js @@ -1,3 +1,7 @@ +'use strict'; + +var _ = require('lodash'); + var common = function() {}; @@ -9,14 +13,14 @@ var die = common.die = function(err) { }; common.parseMN = function(MN) { - if (!MN) + if (!MN) die('No m-n parameter'); var mn = MN.split('-'); - var m = parseInt(mn[0]); + var m = parseInt(mn[0]); var n = parseInt(mn[1]); - if (!m || ! n) { + if (!m || !n) { die('Bad m-n parameter'); } @@ -28,4 +32,20 @@ common.shortID = function(id) { return id.substr(id.length - 4); }; +common.findOneTxProposal = function(txps, id) { + var matches = _.filter(txps, function(tx) { + return _.endsWith(common.shortID(tx.id), id); + }); + + if (!matches.length) + common.die('Could not find TX Proposal:' + id); + + if (matches.length > 1) + common.die('More than one TX Proposals match:' + id + ' : ' + _.map(matches, function(tx) { + return tx.id; + }).join(' '));; + + return matches[0]; +}; + module.exports = common; diff --git a/lib/client/API.js b/lib/client/API.js index 1bae91c..df263c2 100644 --- a/lib/client/API.js +++ b/lib/client/API.js @@ -84,7 +84,7 @@ API.prototype._loadAndCheck = function() { return data; }; -ClientLib.prototype._doRequest = function(method, url, args, data, cb) { +API.prototype._doRequest = function(method, url, args, data, cb) { var reqSignature = _signRequest(method, url, args, data.signingPrivKey); var absUrl = _getUrl(url); request({ @@ -359,7 +359,7 @@ API.prototype.rejectTxProposal = function(txp, reason, cb) { this._doPostRequest(url, args, data, cb); }; -ClientLib.prototype.removeTxProposal = function(txp, cb) { +API.prototype.removeTxProposal = function(txp, cb) { var self = this; var data = this._loadAndCheck(); diff --git a/lib/server.js b/lib/server.js index d186758..21b4d7f 100644 --- a/lib/server.js +++ b/lib/server.js @@ -547,19 +547,19 @@ CopayServer.prototype.removeWallet = function(opts, cb) { * removePendingTx * * @param opts - * @param {string} opts.id - The tx id. + * @param {string} opts.txProposalId - The tx id. * @return {undefined} */ CopayServer.prototype.removePendingTx = function(opts, cb) { var self = this; - if (!Utils.checkRequired(opts, ['id'])) + if (!Utils.checkRequired(opts, ['txProposalId'])) return cb(new ClientError('Required argument missing')); Utils.runLocked(self.walletId, cb, function(cb) { self.getTx({ - id: opts.id + id: opts.txProposalId, }, function(err, txp) { if (err) return cb(err); @@ -576,7 +576,7 @@ CopayServer.prototype.removePendingTx = function(opts, cb) { return cb(new ClientError('Cannot remove a proposal signed/rejected by other copayers')); self._notify('transactionProposalRemoved'); - self.storage.removeTx(self.walletId, opts.id, cb); + self.storage.removeTx(self.walletId, txp.id, cb); }); }); };