A simple event bus to communicate between Nextcloud components.
npm install @nextcloud/event-bus --save
yarn add @nextcloud/event-bus
import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
const h = (e) => console.info(e)
subscribe('a', h)
subscribe('b', h)
emit('a', {
data: 123,
})
unsubscribe('a', h)
unsubscribe('b', h)
It is also possible to type events, which allows type infering on the event-bus methods like emit, subscribe and unsubscribe.
To register new events, simply extend the NextcloudEvents interface:
event-bus.d.ts:declare module '@nextcloud/event-bus' {
interface NextcloudEvents {
'example-app:awesomeness:increased': { level: number }
}
}
export {}
import { subscribe } from '@nextcloud/event-bus'
subscribe('example-app:awesomeness:increased', (event) => {
// "event" automatically infers type { level: number}
console.log(event.level)
})
To stay consistent, we encourage you to use the following syntax when declaring events
app-id:object:verb
nextcloud:unified-search:closedfiles:node:uploadingfiles:node:uploadedfiles:node:deletedcontacts:contact:deletedcalendar:event:createdforms:answer:updatednpm install
npm run build
npm run test