import {Subject} from "rxjs"; import type {BanUserMessage, SendUserMessage} from "../Messages/generated/messages_pb"; export enum AdminMessageEventTypes { admin = 'message', audio = 'audio', ban = 'ban', banned = 'banned', } interface AdminMessageEvent { type: AdminMessageEventTypes, text: string; //todo add optional properties for other event types } //this class is designed to easily allow communication between the RoomConnection objects (that receive the message) //and the various objects that may render the message on screen class AdminMessagesService { private _messageStream: Subject = new Subject(); public messageStream = this._messageStream.asObservable(); constructor() { this.messageStream.subscribe((event) => console.log('message', event)) } onSendusermessage(message: SendUserMessage|BanUserMessage) { this._messageStream.next({ type: message.getType() as unknown as AdminMessageEventTypes, text: message.getMessage(), }) } } export const adminMessagesService = new AdminMessagesService();