From 1f83f851898fe7169428b0a876af60bf5c8440e2 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Wed, 10 Sep 2014 18:03:31 -0300 Subject: [PATCH] separated subscribeToAddresses from getAddressesInfo --- js/models/core/Wallet.js | 17 ++++++----------- js/services/controllerUtils.js | 6 ++++-- test/test.Wallet.js | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index a9f34c4aa..16f26f7c5 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -1925,21 +1925,16 @@ Wallet.prototype.getAddressesStr = function(opts) { }); }; +Wallet.prototype.subscribeToAddresses = function() { + var addrInfo = this.publicKeyRing.getAddressesInfo(); + this.blockchain.subscribe(_.pluck(addrInfo, 'addressStr')); +}; + /** * @desc Alias for {@link PublicKeyRing#getAddressesInfo} */ Wallet.prototype.getAddressesInfo = function(opts) { - var addrInfo = this.publicKeyRing.getAddressesInfo(opts, this.publicKey); - var currentAddrs = this.blockchain.getSubscriptions(); - - var newAddrs = []; - for (var i in addrInfo) { - var a = addrInfo[i]; - if (!currentAddrs[a.addressStr] && !a.isChange) - newAddrs.push(a.addressStr); - } - this.blockchain.subscribe(newAddrs); - return addrInfo; + return this.publicKeyRing.getAddressesInfo(opts, this.publicKey); }; /** * @desc Returns true if a given address was generated by deriving our master public key diff --git a/js/services/controllerUtils.js b/js/services/controllerUtils.js index 90fe1948f..8926fd877 100644 --- a/js/services/controllerUtils.js +++ b/js/services/controllerUtils.js @@ -107,7 +107,7 @@ angular.module('copayApp.services') }, 3000); }); w.on('txProposalEvent', function(e) { - + var user = w.publicKeyRing.nicknameForCopayer(e.cId); switch (e.type) { case 'signed': @@ -158,8 +158,10 @@ angular.module('copayApp.services') // TODO movie this to wallet root.updateAddressList = function() { var w = $rootScope.wallet; - if (w && w.isReady()) + if (w && w.isReady()) { + w.subscribeToAddresses(); $rootScope.addrInfos = w.getAddressesInfo(); + } }; root.updateBalance = function(cb) { diff --git a/test/test.Wallet.js b/test/test.Wallet.js index 26498c1e4..62a8f7445 100644 --- a/test/test.Wallet.js +++ b/test/test.Wallet.js @@ -1,5 +1,6 @@ 'use strict'; +var _ = require('underscore'); var chai = chai || require('chai'); var should = chai.should(); var sinon = require('sinon'); @@ -914,6 +915,22 @@ describe('Wallet model', function() { }); }); + describe('#subscribeToAddresses', function() { + it('should subscribe successfully', function() { + var w = cachedCreateW2(); + var addr1 = w.getAddresses()[0].toString(); + var addr2 = w.generateAddress().toString(); + var addr3 = w.generateAddress(true).toString(); + chai.expect(w.getAddresses().length).to.equal(3); + + w.blockchain.subscribe = sinon.spy(); + w.subscribeToAddresses(); + w.blockchain.subscribe.calledOnce.should.equal(true); + var arg = w.blockchain.subscribe.getCall(0).args[0]; + chai.expect(_.difference(arg, [addr1, addr2, addr3]).length).to.equal(0); + }); + }); + describe('#send', function() { it('should call this.network.send', function() { var w = cachedCreateW2();