mirror of
https://github.com/strapi/strapi.git
synced 2025-11-14 09:07:59 +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);
|
const eventList = Object.entries(events).filter(keyIsValidEventName).filter(valueIsFunctionType);
|
||||||
|
|
||||||
for (const [eventName, handler] of eventList) {
|
for (const [eventName, handler] of eventList) {
|
||||||
strapi.eventHub.addSubscriber((name, ...args) => {
|
strapi.eventHub.on(authEventsMapper[eventName], handler);
|
||||||
if (name === authEventsMapper[eventName]) {
|
|
||||||
handler(...args);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -225,7 +225,7 @@ class Strapi {
|
|||||||
|
|
||||||
await this.runLifecyclesFunctions(LIFECYCLES.DESTROY);
|
await this.runLifecyclesFunctions(LIFECYCLES.DESTROY);
|
||||||
|
|
||||||
this.eventHub.removeAllSubscribers();
|
this.eventHub.destroy();
|
||||||
|
|
||||||
if (_.has(this, 'db')) {
|
if (_.has(this, 'db')) {
|
||||||
await this.db.destroy();
|
await this.db.destroy();
|
||||||
|
|||||||
@ -4,17 +4,24 @@
|
|||||||
* The event hub is Strapi's event control center.
|
* The event hub is Strapi's event control center.
|
||||||
*/
|
*/
|
||||||
module.exports = function createEventHub() {
|
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
|
// Store of subscribers that will be called when an event is emitted
|
||||||
const subscribers = [];
|
const subscribers = [defaultSubscriber];
|
||||||
|
|
||||||
return {
|
return {
|
||||||
emit(eventName, ...args) {
|
async emit(eventName, ...args) {
|
||||||
subscribers.forEach((subscriber) => {
|
await Promise.all(subscribers.map((subscriber) => subscriber(eventName, ...args)));
|
||||||
subscriber(eventName, ...args);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
addSubscriber(subscriber) {
|
subscribe(subscriber) {
|
||||||
subscribers.push(subscriber);
|
subscribers.push(subscriber);
|
||||||
|
|
||||||
// Return a function to remove the 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;
|
subscribers.length = 0;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@ -33,7 +33,7 @@ class WebhookRunner {
|
|||||||
this.queue = new WorkerQueue({ logger, concurrency: 5 });
|
this.queue = new WorkerQueue({ logger, concurrency: 5 });
|
||||||
this.queue.subscribe(this.executeListener.bind(this));
|
this.queue.subscribe(this.executeListener.bind(this));
|
||||||
|
|
||||||
strapi.eventHub.addSubscriber((eventName, ...args) => {
|
strapi.eventHub.subscribe((eventName, ...args) => {
|
||||||
if (this.listeners.has(eventName)) {
|
if (this.listeners.has(eventName)) {
|
||||||
const listener = this.listeners.get(eventName);
|
const listener = this.listeners.get(eventName);
|
||||||
listener(...args);
|
listener(...args);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user