Skip to content

Commit

Permalink
feat: migrate to Broadcast Channel API
Browse files Browse the repository at this point in the history
Signed-off-by: John Molakvoæ <[email protected]>
  • Loading branch information
skjnldsv committed Apr 27, 2023
1 parent 65ee342 commit 2c1f52f
Showing 1 changed file with 24 additions and 8 deletions.
32 changes: 24 additions & 8 deletions lib/SimpleBus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,23 @@ import { EventHandler } from "./EventHandler.js";
export class SimpleBus implements EventBus {

private handlers = new Map<string, EventHandler[]>();
private channel: BroadcastChannel;

constructor() {
this.channel = new BroadcastChannel('nextcloud')

console.debug('SimpleBus 2 created', this)
// Global broadcast channel
this.channel.onmessage = (event) => {
(this.handlers.get(event.data.name) || []).forEach(h => {
try {
h(event.data.event)
} catch (e) {
console.error('could not invoke event listener', e)
}
})
}
}

getVersion(): string {
return globalThis.__pkg_version;
Expand All @@ -19,13 +36,12 @@ export class SimpleBus implements EventBus {
}

emit(name: string, event: Event): void {
(this.handlers.get(name) || []).forEach(h => {
try {
h(event)
} catch (e) {
console.error('could not invoke event listener', e)
}
})
try {
const data = { name, event }
console.debug('Bus emit', data);
this.channel.postMessage(data);
} catch (e) {
console.error('could not emit event', e)
}
}

}

0 comments on commit 2c1f52f

Please sign in to comment.