X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/634b0aaa07097f4a413a85e7c172176dda8e42e1..refs/pull/5239/head:/resources/js/services/events.ts diff --git a/resources/js/services/events.ts b/resources/js/services/events.ts index c251ee21b..be9fba7ec 100644 --- a/resources/js/services/events.ts +++ b/resources/js/services/events.ts @@ -1,11 +1,13 @@ +import {HttpError} from "./http"; + export class EventManager { - protected listeners: Record void)[]> = {}; + protected listeners: Record 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] || []; @@ -17,7 +19,7 @@ export class EventManager { /** * Listen to a custom event and run the given callback when that event occurs. */ - listen(eventName: string, callback: (data: {}) => void): void { + listen(eventName: string, callback: (data: T) => void): void { if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = []; this.listeners[eventName].push(callback); } @@ -62,9 +64,9 @@ export class EventManager { /** * Notify standard server-provided error messages. */ - showResponseError(responseErr: {status?: number, data?: {message?: string}}): void { + showResponseError(responseErr: {status?: number, data?: Record}|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); } }