@totle/web3connect
Version:
A single Web3 / Ethereum provider solution for all Wallets
51 lines (42 loc) • 1.44 kB
text/typescript
import { IEventCallback } from "../../helpers/types";
// -- EventController --------------------------------------------------------- //
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);
});
}
}
}
export default EventController;