diff --git a/js/controllers/addresses.js b/js/controllers/addresses.js index 8e9e0a213..3a0f7bacd 100644 --- a/js/controllers/addresses.js +++ b/js/controllers/addresses.js @@ -12,27 +12,27 @@ angular.module('copayApp.controllers').controller('AddressesController', controllerUtils.setSocketHandlers(); controllerUtils.updateAddressList(); $scope.loading = false; - },1); + }, 1); }); }; - $scope.selectAddress = function (addr) { + $scope.selectAddress = function(addr) { $scope.selectedAddr = addr; }; $rootScope.$watch('addrInfos', function() { $scope.addressList(); - }); + }); - $scope.addressList = function () { + $scope.addressList = function() { $scope.addresses = []; var addrInfos = $rootScope.addrInfos; if (addrInfos) { - for(var i=0;i 0) { + notification.info('New Transaction', ($rootScope.txAlertCount == 1) ? 'You have a pending transaction proposal' : 'You have ' + $rootScope.txAlertCount + ' pending transaction proposals', txAlertCount); + } + }); + }; + root.startNetwork = function(w, $scope) { + Socket.removeAllListeners(); + root.setupRootVariables(); root.installStartupHandlers(w, $scope); + root.setSocketHandlers(); var handlePeerVideo = function(err, peerID, url) { if (err) { @@ -103,8 +130,8 @@ angular.module('copayApp.services') }); w.on('publicKeyRingUpdated', function(dontDigest) { - root.setSocketHandlers(); root.updateAddressList(); + root.setSocketHandlers(); if (!dontDigest) { $rootScope.$digest(); } @@ -122,7 +149,7 @@ angular.module('copayApp.services') }); }, 3000); }); - w.on('txProposalEvent', function(e){ + w.on('txProposalEvent', function(e) { switch (e.type) { case 'signed': var user = w.publicKeyRing.nicknameForCopayer(e.cId); @@ -273,20 +300,23 @@ angular.module('copayApp.services') if (!$rootScope.wallet) return; var currentAddrs = Socket.getListeners(); - var addrs = $rootScope.wallet.getAddressesStr(); + var allAddrs = $rootScope.addrInfos; var newAddrs = []; - for (var i in addrs) { - var a = addrs[i]; - if (!currentAddrs[a]) + for (var i in allAddrs) { + var a = allAddrs[i]; + if (!currentAddrs[a.addressStr]) newAddrs.push(a); } for (var i = 0; i < newAddrs.length; i++) { - Socket.emit('subscribe', newAddrs[i]); + Socket.emit('subscribe', newAddrs[i].addressStr); } - newAddrs.forEach(function(addr) { - Socket.on(addr, function(txid) { - $rootScope.receivedFund = [txid, addr]; + newAddrs.forEach(function(a) { + Socket.on(a.addressStr, function(txid) { + + if (!a.isChange) + notification.funds('Received fund', a.addressStr); + root.updateBalance(function() { $rootScope.$digest(); }); @@ -297,7 +327,7 @@ angular.module('copayApp.services') Socket.emit('subscribe', 'inv'); Socket.on('block', function(block) { root.updateBalance(function() { - $rootScope.$digest(); + $rootScope.$digest(); }); }); } diff --git a/js/services/socket.js b/js/services/socket.js index 10f843b6f..99dce34b4 100644 --- a/js/services/socket.js +++ b/js/services/socket.js @@ -38,8 +38,12 @@ angular.module('copayApp.services').factory('Socket', var ret = {}; var addrList = listeners - .filter(function(i) { return i.event != 'block'; }) - .map(function(i) {return i.event;}); + .filter(function(i) { + return i.event != 'block'; + }) + .map(function(i) { + return i.event; + }); for (var i in addrList) { ret[addrList[i]] = 1; @@ -47,7 +51,9 @@ angular.module('copayApp.services').factory('Socket', return ret; }, isListeningBlocks: function() { - return listeners.filter(function(i) { return i.event == 'block'; }).length > 0; + return listeners.filter(function(i) { + return i.event == 'block'; + }).length > 0; }, emit: function(event, data, callback) { socket.emit(event, data, function() { @@ -62,7 +68,7 @@ angular.module('copayApp.services').factory('Socket', removeAllListeners: function() { for (var i = 0; i < listeners.length; i++) { var details = listeners[i]; - socket.removeListener(details.event, details.fn); + socket.removeAllListeners(details.event); } listeners = [];