Pinafore-Web-Client-Frontend/routes/_utils/eventBus.js

22 lines
550 B
JavaScript

import EventEmitter from 'events'
const eventBus = new EventEmitter()
// we need enough 'postedStatus' listeners for each
// visible status in a timeline
eventBus.setMaxListeners(100)
if (process.browser && process.env.NODE_ENV !== 'production') {
window.eventBus = eventBus
}
export function on (eventName, component, method) {
let callback = method.bind(component)
eventBus.on(eventName, callback)
component.on('destroy', () => {
eventBus.removeListener(eventName, callback)
})
}
export const emit = eventBus.emit.bind(eventBus)