51 lines
1.0 KiB
TypeScript
51 lines
1.0 KiB
TypeScript
import { EventEmitter } from "events";
|
|
|
|
export type Chatter = {
|
|
name: string,
|
|
};
|
|
|
|
export const chatters = new Array<Chatter>();
|
|
|
|
export type Message = {
|
|
message: string,
|
|
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();
|
|
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();
|