diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index 747c4904c..e94419ca6 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -710,7 +710,13 @@ Wallet.prototype._setBlockchainListeners = function() { }); this.blockchain.on('tx', function(tx) { log.debug('blockchain tx event'); - self.emit('tx', tx.address); + var addresses = self.getAddressesInfo(); + var addr = _.findWhere(addresses, { + addressStr: tx.address + }); + if (addr) { + self.emit('tx', tx.address, addr.isChange); + } }); if (!self.spendUnconfirmed) { @@ -1403,10 +1409,9 @@ Wallet.prototype.receivePaymentRequest = function(options, pr, cb) { expires: expires, memo: memo || 'This server would like some BTC from you.', payment_url: payment_url, - merchant_data: merchant_data - ? merchant_data.toString('hex') - // : new Buffer('none', 'utf8').toString('hex') - : '00' + merchant_data: merchant_data ? merchant_data.toString('hex') + // : new Buffer('none', 'utf8').toString('hex') + : '00' }, signature: sig.toString('hex'), ca: trust.caName, diff --git a/js/services/controllerUtils.js b/js/services/controllerUtils.js index 8926fd877..56d93827a 100644 --- a/js/services/controllerUtils.js +++ b/js/services/controllerUtils.js @@ -69,8 +69,10 @@ angular.module('copayApp.services') } }); - w.on('tx', function(address) { - notification.funds('Funds received!', address); + w.on('tx', function(address, isChange) { + if (!isChange) { + notification.funds('Funds received!', address); + } root.updateBalance(function() { $rootScope.$digest(); }); diff --git a/test/test.Wallet.js b/test/test.Wallet.js index 8360d5cac..efe897824 100644 --- a/test/test.Wallet.js +++ b/test/test.Wallet.js @@ -1591,4 +1591,27 @@ describe('Wallet model', function() { should.exist(n.networkNonce); }); + it('should emit notification when tx received', function(done) { + var w = cachedCreateW2(); + w.blockchain.removeAllListeners = sinon.stub(); + var spy = sinon.spy(w, 'emit'); + + w.generateAddress(false, function(addr1) { + w.generateAddress(true, function(addr2) { + w.blockchain.on = sinon.stub().withArgs('tx').yields({ + address: addr1.toString(), + }); + w._setBlockchainListeners(); + spy.calledWith('tx', addr1.toString(), false).should.be.true; + + w.blockchain.on = sinon.stub().withArgs('tx').yields({ + address: addr2.toString(), + }); + w._setBlockchainListeners(); + spy.calledWith('tx', addr2.toString(), true).should.be.true; + done(); + }); + }); + }); + });