Fix EventsWrapper not unsubscribing from events

Also changed it to use removeListener so it can be used with normal EventEmitters
This commit is contained in:
Samuel Elliott 2018-05-05 11:17:26 +01:00
parent 40a72458e2
commit 5aa921ae4b
No known key found for this signature in database
GPG Key ID: 8420C7CDE43DC4D6
2 changed files with 8 additions and 5 deletions

View File

@ -40,13 +40,15 @@ export default class {
emitter.removeListener(event, callback);
}
static get removeListener() { return this.off }
/**
* Emits an event
* @param {String} event The event to emit
* @param {Any} ...data Data to pass to the event listeners
*/
static emit(...args) {
emitter.emit(...args);
static emit(event, ...data) {
emitter.emit(event, ...data);
}
}

View File

@ -14,6 +14,7 @@ export default class EventsWrapper {
constructor(eventemitter, bind) {
eventemitters.set(this, eventemitter);
this.bind = bind || this;
}
get eventSubs() {
@ -37,16 +38,16 @@ export default class EventsWrapper {
get off() { return this.unsubscribe }
unsubscribe(event, callback) {
for (let index of this.eventSubs) {
for (let index in this.eventSubs) {
if (this.eventSubs[index].event !== event || (callback && this.eventSubs[index].callback === callback)) continue;
eventemitters.get(this).off(event, this.eventSubs[index].boundCallback);
eventemitters.get(this).removeListener(event, this.eventSubs[index].boundCallback);
this.eventSubs.splice(index, 1);
}
}
unsubscribeAll() {
for (let event of this.eventSubs) {
eventemitters.get(this).off(event.event, event.boundCallback);
eventemitters.get(this).removeListener(event.event, event.boundCallback);
}
this.eventSubs.splice(0, this.eventSubs.length);
}