]> BookStack Code Mirror - bookstack/blobdiff - resources/js/services/events.ts
ExportFormatter: Add book description and check for empty book and chapter descriptio...
[bookstack] / resources / js / services / events.ts
index c251ee21b63e923555aaa976dca67b8bfc9550af..be9fba7eca515cebd616c09acfd1995f916f65ec 100644 (file)
@@ -1,11 +1,13 @@
+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] || [];
@@ -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<T>(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<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);
         }
     }