aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2016-09-07 09:56:26 +0800
committerDan Finlay <dan@danfinlay.com>2016-09-07 09:56:26 +0800
commitbfea26d3e3d12de6ce9bbc01ad24a42d846021e5 (patch)
treeb9e69d4d05f5845d2edf51fb5987374e603a1729 /app/scripts
parentb1cd7ebc47f8ec2170c03cff67a0f8fd870a325a (diff)
downloadtangerine-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.js1
-rw-r--r--app/scripts/lib/listener-manager.js25
-rw-r--r--app/scripts/metamask-controller.js2
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)
}