diff --git a/lib/model/txproposal.js b/lib/model/txproposal.js index 5e64d84..f8316d2 100644 --- a/lib/model/txproposal.js +++ b/lib/model/txproposal.js @@ -145,6 +145,12 @@ TxProposal.fromObj = function(obj) { return x; }; +TxProposal.prototype.toObject = function() { + var x = _.cloneDeep(this); + x.isPending = this.isPending(); + return x; +}; + TxProposal.prototype.setInputs = function(inputs) { this.inputs = inputs; this.inputPaths = _.pluck(inputs, 'path'); diff --git a/lib/model/wallet.js b/lib/model/wallet.js index afe2a15..eb2b3fe 100644 --- a/lib/model/wallet.js +++ b/lib/model/wallet.js @@ -65,6 +65,12 @@ Wallet.fromObj = function(obj) { return x; }; +Wallet.prototype.toObject = function() { + var x = _.cloneDeep(this); + x.isShared = this.isShared(); + return x; +}; + /* For compressed keys, m*73 + n*34 <= 496 */ Wallet.COPAYER_PAIR_LIMITS = { 1: 1, diff --git a/lib/storage.js b/lib/storage.js index d0fb4af..2649de5 100644 --- a/lib/storage.js +++ b/lib/storage.js @@ -101,7 +101,7 @@ Storage.prototype.fetchWallet = function(id, cb) { Storage.prototype.storeWallet = function(wallet, cb) { this.db.collection(collections.WALLETS).update({ id: wallet.id - }, wallet, { + }, wallet.toObject(), { w: 1, upsert: true, }, cb); @@ -326,11 +326,10 @@ Storage.prototype.storeNotification = function(walletId, notification, cb) { // TODO: remove walletId from signature Storage.prototype.storeTx = function(walletId, txp, cb) { - txp.isPending = txp.isPending(); // Persist attribute to use when querying this.db.collection(collections.TXS).update({ id: txp.id, walletId: walletId - }, txp, { + }, txp.toObject(), { w: 1, upsert: true, }, cb);