Index: lib/filterNotifier.js |
=================================================================== |
--- a/lib/filterNotifier.js |
+++ b/lib/filterNotifier.js |
@@ -20,37 +20,38 @@ |
* messages about filter changes. |
*/ |
-/** |
- * List of registered listeners |
- * @type function[] |
- */ |
-let listeners = []; |
+let {EventEmitter} = require("events"); |
+ |
+const CATCH_ALL = "__all"; |
/** |
* This class allows registering and triggering listeners for filter events. |
* @class |
*/ |
-let FilterNotifier = exports.FilterNotifier = |
+exports.FilterNotifier = |
{ |
+ __proto__: new EventEmitter(), |
+ |
/** |
* Adds a listener |
+ * |
+ * @deprecated use FilterNotifier.on(action, callback) |
*/ |
addListener: function(/**function(action, item, newValue, oldValue)*/ listener) |
{ |
- if (listeners.indexOf(listener) >= 0) |
- return; |
- |
- listeners.push(listener); |
+ let listeners = this._listeners[CATCH_ALL]; |
+ if (!listeners || listeners.indexOf(listener) == -1) |
+ this.on(CATCH_ALL, listener); |
}, |
/** |
* Removes a listener that was previosly added via addListener |
+ * |
+ * @deprecated use FilterNotifier.off(action, callback) |
*/ |
removeListener: function(/**function(action, item, newValue, oldValue)*/ listener) |
{ |
- let index = listeners.indexOf(listener); |
- if (index >= 0) |
- listeners.splice(index, 1); |
+ this.off(CATCH_ALL, listener); |
}, |
/** |
@@ -63,11 +64,11 @@ |
* "filter.added", "filter.removed", "filter.moved", |
* "filter.disabled", "filter.hitCount", "filter.lastHit") |
* @param {Subscription|Filter} item item that the change applies to |
+ * @deprecated use FilterNotifier.emit(action) |
*/ |
triggerListeners: function(action, item, param1, param2, param3) |
{ |
- let list = listeners.slice(); |
- for (let listener of list) |
- listener(action, item, param1, param2, param3); |
+ this.emit(action, item, param1, param2, param3); |
+ this.emit(CATCH_ALL, action, item, param1, param2, param3); |
} |
}; |