From 0433dc05cb4a5416f67fbe03a8f36dc84e78f48a Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Wed, 5 Aug 2015 20:32:20 -0300 Subject: [PATCH] add backwards compat with bwc --- lib/model/copayer.js | 37 +++++++++++++++++++++++++++++-------- lib/model/wallet.js | 3 ++- lib/storage.js | 7 +------ 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/lib/model/copayer.js b/lib/model/copayer.js index 92010af..45c4aac 100644 --- a/lib/model/copayer.js +++ b/lib/model/copayer.js @@ -38,6 +38,13 @@ Copayer.create = function(opts) { signature: opts.signature, }]; } + + x.requestPubKey = opts.requestPubKey; + x.signature = opts.signature; + + x.requestPubKeys = opts.requestPubKeys; + Copayer.expandForCompat(x); + x.addressManager = AddressManager.create({ copayerIndex: opts.copayerIndex }); @@ -45,6 +52,21 @@ Copayer.create = function(opts) { return x; }; +Copayer.expandForCompat = function(x) { + if (!x.requestPubKeys) { + x.requestPubKeys = [{ + key: x.requestPubKey, + signature: x.signature, + }]; + } + // For backcompat + if (!x.requestPubKey) { + var l = _.last(x.requestPubKeys); + x.requestPubKey = l.key; + x.signature = l.signature; + } +}; + Copayer.fromObj = function(obj) { var x = new Copayer(); @@ -52,14 +74,13 @@ Copayer.fromObj = function(obj) { x.id = obj.id; x.name = obj.name; x.xPubKey = obj.xPubKey; - if (!obj.requestPubKeys) { - x.requestPubKeys = [{ - key: obj.requestPubKey, - signature: obj.signature, - }]; - } else { - x.requestPubKeys = obj.requestPubKeys; - } + + x.requestPubKey = obj.requestPubKey; + x.signature = obj.signature; + + x.requestPubKeys = obj.requestPubKeys; + Copayer.expandForCompat(x); + x.addressManager = AddressManager.fromObj(obj.addressManager); return x; }; diff --git a/lib/model/wallet.js b/lib/model/wallet.js index e32ef95..3c60374 100644 --- a/lib/model/wallet.js +++ b/lib/model/wallet.js @@ -94,7 +94,8 @@ Wallet.prototype.isShared = function() { Wallet.prototype._updatePublicKeyRing = function() { this.publicKeyRing = _.map(this.copayers, function(copayer) { - return _.pick(copayer, ['xPubKey']); + return _.pick(copayer, ['xPubKey', 'requestPubKey']); +// return _.pick(copayer, ['xPubKey']); }); }; diff --git a/lib/storage.js b/lib/storage.js index d5d99c8..add7fd7 100644 --- a/lib/storage.js +++ b/lib/storage.js @@ -141,12 +141,7 @@ Storage.prototype.fetchCopayerLookup = function(copayerId, cb) { if (err) return cb(err); if (!result) return cb(); - if (!result.requestPubKeys) { - result.requestPubKeys = [{ - key: result.requestPubKey, - signature: result.signature, - }]; - } + Model.Copayer.expandForCompat(result); return cb(null, result); });