From 2c354525eac2aa43b5e4b7b412ef985e0d2565c1 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Thu, 28 Aug 2014 19:19:28 -0300 Subject: [PATCH] test passing --- js/controllers/more.js | 1 - js/models/core/Wallet.js | 20 +++++++++++++------- js/models/network/Async.js | 10 +++++----- test/mocks/FakeWallet.js | 3 +-- test/test.Wallet.js | 16 ---------------- 5 files changed, 19 insertions(+), 31 deletions(-) diff --git a/js/controllers/more.js b/js/controllers/more.js index d0cee706b..87c76ebec 100644 --- a/js/controllers/more.js +++ b/js/controllers/more.js @@ -16,7 +16,6 @@ angular.module('copayApp.controllers').controller('MoreController', $scope.deleteWallet = function() { var w = $rootScope.wallet; - w.disconnect(); walletFactory.delete(w.id, function() { controllerUtils.logout(); }); diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index 80b92ec5a..7e1c14c83 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -53,6 +53,7 @@ function Wallet(opts) { this.addressBook = opts.addressBook || {}; this.publicKey = this.privateKey.publicHex; this.lastTimestamp = opts.lastTimestamp || undefined; + this.lastMessageFrom = {}; this.paymentRequests = opts.paymentRequests || {}; @@ -313,7 +314,7 @@ Wallet.prototype.updateTimestamp = function(ts) { Wallet.prototype._onNoMessages = function() { console.log('No messages at the server. Requesting sync'); //TODO - this.sendWalletReady(senderId); + this.sendWalletReady(); }; Wallet.prototype._onData = function(senderId, data, ts) { @@ -323,7 +324,7 @@ Wallet.prototype._onData = function(senderId, data, ts) { preconditions.checkArgument(ts); preconditions.checkArgument(typeof ts === 'number'); - //console.log('RECV', senderId, data); + console.log('RECV', senderId, data); if (data.type !== 'walletId' && this.id !== data.walletId) { this.emit('corrupt', senderId); @@ -331,15 +332,18 @@ Wallet.prototype._onData = function(senderId, data, ts) { return; } + switch (data.type) { // This handler is repeaded on WalletFactory (#join). TODO case 'walletId': this.sendWalletReady(senderId); break; case 'walletReady': - this.sendPublicKeyRing(senderId); - this.sendAddressBook(senderId); - this.sendAllTxProposals(senderId); // send old txps + if (this.lastMessageFrom[senderId] !== 'walletReady') { + this.sendPublicKeyRing(senderId); + this.sendAddressBook(senderId); + this.sendAllTxProposals(senderId); // send old txps + } break; case 'publicKeyRing': this._onPublicKeyRing(senderId, data); @@ -359,13 +363,15 @@ Wallet.prototype._onData = function(senderId, data, ts) { case 'addressbook': this._onAddressBook(senderId, data); break; - // unused messages + // unused messages case 'disconnect': + //case 'an other unused message': break; default: - throw new Error('unknown message type received: '+ data.type + ' from: ' + senderId) + throw new Error('unknown message type received: ' + data.type + ' from: ' + senderId) } + this.lastMessageFrom[senderId] = data.type; this.updateTimestamp(ts); }; diff --git a/js/models/network/Async.js b/js/models/network/Async.js index 23fbfb4db..86aa60876 100644 --- a/js/models/network/Async.js +++ b/js/models/network/Async.js @@ -290,6 +290,8 @@ Network.prototype.start = function(opts, openCallback) { this._setupConnectionHandlers(openCallback); this.socket.emit('subscribe', pubkey); + + var fromTs = opts.lastTimestamp + 1; var self = this, tries = 0; self.socket.on('insight-error', function(m) { @@ -299,13 +301,13 @@ Network.prototype.start = function(opts, openCallback) { if (tries++ > 5) { self.emit('serverError'); } else { - self.socket.emit('sync', opts.lastTimestamp + 1); + self.socket.emit('sync', fromTs); } }, 500); }); - self.socket.emit('sync', opts.lastTimestamp); + self.socket.emit('sync', fromTs); self.started = true; }; @@ -358,9 +360,7 @@ Network.prototype.send = function(dest, payload, cb) { var to = dest[ii]; if (to == this.copayerId) continue; - console.log('SEND to: ' + to, this.copayerId, payload); - - + //console.log('SEND to: ' + to, this.copayerId, payload); var message = this.encode(to, payload); this.socket.emit('message', message); } diff --git a/test/mocks/FakeWallet.js b/test/mocks/FakeWallet.js index b09cf8f4e..a9a90d073 100644 --- a/test/mocks/FakeWallet.js +++ b/test/mocks/FakeWallet.js @@ -102,8 +102,7 @@ FakeWallet.prototype.toEncryptedObj = function() { return this.enc; }; -FakeWallet.prototype.disconnect = function() { - this.disconnectCalled = 1; +FakeWallet.prototype.close = function() { }; // TODO a try catch was here diff --git a/test/test.Wallet.js b/test/test.Wallet.js index 6406f5bc5..e90ba751b 100644 --- a/test/test.Wallet.js +++ b/test/test.Wallet.js @@ -530,15 +530,6 @@ describe('Wallet model', function() { w._onConnect(newId); }); - it('handle disconnections', function(done) { - var w = createW(); - w.on('disconnect', function(id) { - id.should.equal(newId); - done(); - }); - w._onDisconnect(newId); - }); - it('should register new copayers correctly', function() { var w = createW(); var r = w.getRegisteredCopayerIds(); @@ -1429,11 +1420,4 @@ describe('Wallet model', function() { should.exist(n.networkNonce); }); - it('#disconnect', function() { - var w = cachedCreateW(); - var spy1 = sinon.spy(w, 'send'); - w.disconnect(); - spy1.calledOnce.should.be.true; - }); - });