+import {HttpError} from "./http";
+
export class EventManager {
- protected listeners: Record<string, ((data: {}) => void)[]> = {};
+ protected listeners: Record<string, ((data: any) => void)[]> = {};
protected stack: {name: string, data: {}}[] = [];
/**
* Emit a custom event for any handlers to pick-up.
*/
- emit(eventName: string, eventData: {}): void {
+ emit(eventName: string, eventData: {} = {}): void {
this.stack.push({name: eventName, data: eventData});
const listenersToRun = this.listeners[eventName] || [];
/**
* Listen to a custom event and run the given callback when that event occurs.
*/
- listen(eventName: string, callback: (data: {}) => void): void {
+ listen<T>(eventName: string, callback: (data: T) => void): void {
if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = [];
this.listeners[eventName].push(callback);
}
/**
* Notify standard server-provided error messages.
*/
- showResponseError(responseErr: {status?: number, data?: {message?: string}}): void {
+ showResponseError(responseErr: {status?: number, data?: Record<any, any>}|HttpError): void {
if (!responseErr.status) return;
- if (responseErr.status >= 400 && responseErr.data && responseErr.data.message) {
+ if (responseErr.status >= 400 && typeof responseErr.data === 'object' && responseErr.data.message) {
this.error(responseErr.data.message);
}
}