mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix(hooks): bug where hook firing would fail if there were no listeners
This commit is contained in:
@@ -11,7 +11,7 @@ define('hooks', [], () => {
|
|||||||
};
|
};
|
||||||
Hooks.on = Hooks.register;
|
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) => {
|
const _onHookError = (e, listener, data) => {
|
||||||
console.warn(`[hooks] Exception encountered in ${listener.name ? listener.name : 'anonymous function'}, stack trace follows.`);
|
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) => {
|
const _fireFilterHook = (hookName, data) => {
|
||||||
|
if (!Hooks.hasListeners(hookName)) {
|
||||||
|
return Promise.resolve(data);
|
||||||
|
}
|
||||||
|
|
||||||
const listeners = Array.from(Hooks.loaded[hookName]);
|
const listeners = Array.from(Hooks.loaded[hookName]);
|
||||||
return listeners.reduce((promise, listener) => promise.then((data) => {
|
return listeners.reduce((promise, listener) => promise.then((data) => {
|
||||||
try {
|
try {
|
||||||
@@ -39,6 +43,10 @@ define('hooks', [], () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const _fireStaticHook = (hookName, data) => {
|
const _fireStaticHook = (hookName, data) => {
|
||||||
|
if (!Hooks.hasListeners(hookName)) {
|
||||||
|
return Promise.resolve(data);
|
||||||
|
}
|
||||||
|
|
||||||
const listeners = Array.from(Hooks.loaded[hookName]);
|
const listeners = Array.from(Hooks.loaded[hookName]);
|
||||||
return Promise.allSettled(listeners.map((listener) => {
|
return Promise.allSettled(listeners.map((listener) => {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user