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:
- Create a file like
event-bus.d.ts
:
declare module '@nextcloud/event-bus' {
interface NextcloudEvents {
'example-app:awesomeness:increased': { level: number }
}
}
export {}
- Now if you use any of the event bus functions, the parameters will automatically be typed correctly:
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:closed
files:node:uploading
files:node:uploaded
files:node:deleted
contacts:contact:deleted
calendar:event:created
forms:answer:updated
npm install
npm run build
npm run test