34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
|
import {Subject} from "rxjs";
|
||
|
import {SendUserMessage} from "../Messages/generated/messages_pb";
|
||
|
|
||
|
export enum AdminMessageEventTypes {
|
||
|
admin = 'message',
|
||
|
audio = 'audio',
|
||
|
ban = 'ban',
|
||
|
}
|
||
|
|
||
|
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<AdminMessageEvent> = new Subject();
|
||
|
public messageStream = this._messageStream.asObservable();
|
||
|
|
||
|
constructor() {
|
||
|
this.messageStream.subscribe((event) => console.log('message', event))
|
||
|
}
|
||
|
|
||
|
onSendusermessage(message: SendUserMessage) {
|
||
|
this._messageStream.next({
|
||
|
type: message.getType() as unknown as AdminMessageEventTypes,
|
||
|
text: message.getMessage(),
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export const adminMessagesService = new AdminMessagesService();
|