deployment-talks/chat-app/src/chat-room.ts

51 lines
1.0 KiB
TypeScript
Raw Normal View History

import { EventEmitter } from "events";
export type Chatter = {
name: string,
};
export const chatters = new Array<Chatter>();
export type Message = {
message: string,
2024-10-08 12:42:15 +00:00
timestamp: Date,
chatter: string,
};
export function createMessageString(message: Message): string {
return `${message.chatter.name}: ${message.message}`;
}
export class ChatRoom extends EventEmitter {
protected messages: Message[];
public constructor() {
super();
2024-10-08 12:42:15 +00:00
this.messages = new Array<Message>();
}
public getMessages(): Message[] {
return this.messages;
}
public addMessage(message: Message) {
this.messages.push(message);
this.emit("message-added", { message });
}
public getMessagesAsArray(): string[] {
return this.messages.map(m => createMessageString(m));
}
public getNewestMessage(): Message {
const message = this.messages[this.messages - 1];
}
// set up the lifetime to clear messages in memory
protected pruneMessages(lifetime: number): void {
}
}
export const chatRoom = new ChatRoom();