autsequi
Version:
Web3modal's provider layer abstraction for simple implementation of web3 wallet connections
49 lines (41 loc) • 1.41 kB
text/typescript
import { IEventCallback } from '../helpers';
// -- EventController --------------------------------------------------------- //
export class EventController {
private _eventCallbacks: IEventCallback[];
constructor() {
this._eventCallbacks = [];
}
public on(eventCallback: IEventCallback) {
this._eventCallbacks.push(eventCallback);
}
public off(eventObj?: Partial<IEventCallback>) {
// remove specific event callback
if (eventObj) {
if (eventObj.callback) {
this._eventCallbacks = this._eventCallbacks.filter(
(eventCallback: IEventCallback) =>
eventCallback.event !== eventObj.event ||
eventCallback.callback !== eventObj.callback
);
} // No callback to remove, remove entire event
else {
this._eventCallbacks = this._eventCallbacks.filter(
(eventCallback: IEventCallback) =>
eventCallback.event !== eventObj.event
);
}
} else {
this._eventCallbacks = [];
}
}
public trigger(event: string, result?: any): void {
let eventCallbacks: IEventCallback[] = this._eventCallbacks.filter(
(eventCallback: IEventCallback) => eventCallback.event === event
);
if (eventCallbacks && eventCallbacks.length) {
eventCallbacks.forEach((eventCallback: IEventCallback) => {
eventCallback.callback(result);
});
}
}
}