mirror of
https://github.com/strapi/strapi.git
synced 2025-11-02 10:55:37 +00:00
Apply feedback
This commit is contained in:
parent
c29a2a841b
commit
3f01d36578
@ -24,11 +24,7 @@ const registerAuthEvents = () => {
|
||||
const eventList = Object.entries(events).filter(keyIsValidEventName).filter(valueIsFunctionType);
|
||||
|
||||
for (const [eventName, handler] of eventList) {
|
||||
strapi.eventHub.addSubscriber((name, ...args) => {
|
||||
if (name === authEventsMapper[eventName]) {
|
||||
handler(...args);
|
||||
}
|
||||
});
|
||||
strapi.eventHub.on(authEventsMapper[eventName], handler);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -225,7 +225,7 @@ class Strapi {
|
||||
|
||||
await this.runLifecyclesFunctions(LIFECYCLES.DESTROY);
|
||||
|
||||
this.eventHub.removeAllSubscribers();
|
||||
this.eventHub.destroy();
|
||||
|
||||
if (_.has(this, 'db')) {
|
||||
await this.db.destroy();
|
||||
|
||||
@ -4,17 +4,24 @@
|
||||
* The event hub is Strapi's event control center.
|
||||
*/
|
||||
module.exports = function createEventHub() {
|
||||
const listeners = new Map();
|
||||
|
||||
// Default subscriber to easily add listeners with the on() method
|
||||
const defaultSubscriber = async (eventName, ...args) => {
|
||||
if (listeners.has(eventName)) {
|
||||
return Promise.all(listeners.get(eventName).map((listener) => listener(...args)));
|
||||
}
|
||||
};
|
||||
|
||||
// Store of subscribers that will be called when an event is emitted
|
||||
const subscribers = [];
|
||||
const subscribers = [defaultSubscriber];
|
||||
|
||||
return {
|
||||
emit(eventName, ...args) {
|
||||
subscribers.forEach((subscriber) => {
|
||||
subscriber(eventName, ...args);
|
||||
});
|
||||
async emit(eventName, ...args) {
|
||||
await Promise.all(subscribers.map((subscriber) => subscriber(eventName, ...args)));
|
||||
},
|
||||
|
||||
addSubscriber(subscriber) {
|
||||
subscribe(subscriber) {
|
||||
subscribers.push(subscriber);
|
||||
|
||||
// Return a function to remove the subscriber
|
||||
@ -23,7 +30,20 @@ module.exports = function createEventHub() {
|
||||
};
|
||||
},
|
||||
|
||||
removeAllSubscribers() {
|
||||
on(eventName, listener) {
|
||||
if (!listeners.has(eventName)) {
|
||||
listeners.set(eventName, []);
|
||||
}
|
||||
|
||||
listeners.get(eventName).push(listener);
|
||||
|
||||
// Return a function to remove the listener
|
||||
return () => {
|
||||
listeners.get(eventName).splice(listeners.get(eventName).indexOf(listener), 1);
|
||||
};
|
||||
},
|
||||
|
||||
destroy() {
|
||||
subscribers.length = 0;
|
||||
},
|
||||
};
|
||||
|
||||
@ -33,7 +33,7 @@ class WebhookRunner {
|
||||
this.queue = new WorkerQueue({ logger, concurrency: 5 });
|
||||
this.queue.subscribe(this.executeListener.bind(this));
|
||||
|
||||
strapi.eventHub.addSubscriber((eventName, ...args) => {
|
||||
strapi.eventHub.subscribe((eventName, ...args) => {
|
||||
if (this.listeners.has(eventName)) {
|
||||
const listener = this.listeners.get(eventName);
|
||||
listener(...args);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user