From efff8e2ae2e67b87cd55161989904811af0a8e39 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 27 Jan 2021 12:04:50 -0500 Subject: [PATCH] fix(hooks): bug where hook firing would fail if there were no listeners --- public/src/modules/hooks.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/public/src/modules/hooks.js b/public/src/modules/hooks.js index 422e85667e..38ac1f5dcf 100644 --- a/public/src/modules/hooks.js +++ b/public/src/modules/hooks.js @@ -11,7 +11,7 @@ define('hooks', [], () => { }; Hooks.on = Hooks.register; - Hooks.hasListeners = hookName => Hooks.loaded[hookName] && Hooks.loaded[hookName].length > 0; + Hooks.hasListeners = hookName => Hooks.loaded[hookName] && Hooks.loaded[hookName].size > 0; const _onHookError = (e, listener, data) => { console.warn(`[hooks] Exception encountered in ${listener.name ? listener.name : 'anonymous function'}, stack trace follows.`); @@ -20,6 +20,10 @@ define('hooks', [], () => { }; const _fireFilterHook = (hookName, data) => { + if (!Hooks.hasListeners(hookName)) { + return Promise.resolve(data); + } + const listeners = Array.from(Hooks.loaded[hookName]); return listeners.reduce((promise, listener) => promise.then((data) => { try { @@ -39,6 +43,10 @@ define('hooks', [], () => { }; const _fireStaticHook = (hookName, data) => { + if (!Hooks.hasListeners(hookName)) { + return Promise.resolve(data); + } + const listeners = Array.from(Hooks.loaded[hookName]); return Promise.allSettled(listeners.map((listener) => { try {