diff options
author | Dan Finlay <dan@danfinlay.com> | 2016-09-07 09:56:26 +0800 |
---|---|---|
committer | Dan Finlay <dan@danfinlay.com> | 2016-09-07 09:56:26 +0800 |
commit | bfea26d3e3d12de6ce9bbc01ad24a42d846021e5 (patch) | |
tree | b9e69d4d05f5845d2edf51fb5987374e603a1729 /app/scripts | |
parent | b1cd7ebc47f8ec2170c03cff67a0f8fd870a325a (diff) | |
download | tangerine-wallet-browser-bfea26d3e3d12de6ce9bbc01ad24a42d846021e5.tar tangerine-wallet-browser-bfea26d3e3d12de6ce9bbc01ad24a42d846021e5.tar.gz tangerine-wallet-browser-bfea26d3e3d12de6ce9bbc01ad24a42d846021e5.tar.bz2 tangerine-wallet-browser-bfea26d3e3d12de6ce9bbc01ad24a42d846021e5.tar.lz tangerine-wallet-browser-bfea26d3e3d12de6ce9bbc01ad24a42d846021e5.tar.xz tangerine-wallet-browser-bfea26d3e3d12de6ce9bbc01ad24a42d846021e5.tar.zst tangerine-wallet-browser-bfea26d3e3d12de6ce9bbc01ad24a42d846021e5.zip |
Ensure listener is cleaned up
Also fixed bug when validating a tx with no value.
Diffstat (limited to 'app/scripts')
-rw-r--r-- | app/scripts/background.js | 1 | ||||
-rw-r--r-- | app/scripts/lib/listener-manager.js | 25 | ||||
-rw-r--r-- | app/scripts/metamask-controller.js | 2 |
3 files changed, 27 insertions, 1 deletions
diff --git a/app/scripts/background.js b/app/scripts/background.js index 21a5eea65..18aaed7bf 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -86,6 +86,7 @@ function setupControllerConnection (stream) { stream.pipe(dnode).pipe(stream) dnode.on('remote', (remote) => { // push updates to popup + controller.ethStore.removeListener('update', controller.sendUpdate.bind(controller)) controller.ethStore.on('update', controller.sendUpdate.bind(controller)) controller.listeners.push(remote) idStore.on('update', controller.sendUpdate.bind(controller)) diff --git a/app/scripts/lib/listener-manager.js b/app/scripts/lib/listener-manager.js new file mode 100644 index 000000000..9e3c71afc --- /dev/null +++ b/app/scripts/lib/listener-manager.js @@ -0,0 +1,25 @@ +module.exports = class ListenerManager { + + constructor() { + this.cleaners = {} + } + + setup (name) { + if (!(name in this.cleaners)) { + this.cleaners[name] = [] + } + } + + addCleanup (name, cleaner) { + this.setup(name) + } + + cleanupOldListeners (name) { + this.setup(name) + this.cleaners[name].forEach((cleaner) => { + cleaner() + }) + this.cleaners[name] = [] + } + +} diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 83827ec76..5373cf0d9 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -220,7 +220,7 @@ module.exports = class MetamaskController { } enforceTxValidations (txParams) { - if (txParams.value.indexOf('-') === 0) { + if (('value' in txParams) && txParams.value.indexOf('-') === 0) { const msg = `Invalid transaction value of ${txParams.value} not a positive number.` return new Error(msg) } |