From 8953f055c86ca74f145d7ac5ac93bb6104d73af9 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 10 Jul 2023 16:08:53 +0200 Subject: Rename player embed api --- client/src/standalone/embed-player-api/events.ts | 48 ++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 client/src/standalone/embed-player-api/events.ts (limited to 'client/src/standalone/embed-player-api/events.ts') diff --git a/client/src/standalone/embed-player-api/events.ts b/client/src/standalone/embed-player-api/events.ts new file mode 100644 index 000000000..77d21c78c --- /dev/null +++ b/client/src/standalone/embed-player-api/events.ts @@ -0,0 +1,48 @@ +import { EventHandler } from './definitions' + +interface PlayerEventRegistrar { + registrations: EventHandler[] +} + +interface PlayerEventRegistrationMap { + [ name: string ]: PlayerEventRegistrar +} + +export class EventRegistrar { + + private eventRegistrations: PlayerEventRegistrationMap = {} + + public bindToChannel (channel: Channel.MessagingChannel) { + for (const name of Object.keys(this.eventRegistrations)) { + channel.bind(name, (txn, params) => this.fire(name, params)) + } + } + + public registerTypes (names: string[]) { + for (const name of names) { + this.eventRegistrations[name] = { registrations: [] } + } + } + + public fire (name: string, event: T) { + this.eventRegistrations[name].registrations.forEach(x => x(event)) + } + + public addListener (name: string, handler: EventHandler) { + if (!this.eventRegistrations[name]) { + console.warn(`PeerTube: addEventListener(): The event '${name}' is not supported`) + return false + } + + this.eventRegistrations[name].registrations.push(handler) + return true + } + + public removeListener (name: string, handler: EventHandler) { + if (!this.eventRegistrations[name]) return false + + this.eventRegistrations[name].registrations = this.eventRegistrations[name].registrations.filter(x => x !== handler) + + return true + } +} -- cgit v1.2.3