types.ts 806 Bytes
import { RoomData } from "../room/types";

export interface Message {
  readonly type: string;
}

export class LoginMessage implements Message {
  readonly type = MessageType.LOGIN;
  constructor(public username: string) {}
}

export class RoomListMessage implements Message {
  readonly type = MessageType.ROOM_LIST;
  constructor(public rooms: RoomData[]) {}
}

export class RoomJoinMessage implements Message {
  readonly type = MessageType.ROOM_JOIN;
  constructor(public uuid: string) {}
}

export class RoomLeaveMessage implements Message {
  readonly type = MessageType.ROOM_LEAVE;
  constructor() {}
}

export class MessageType {
  static readonly LOGIN = "login";
  static readonly ROOM_LIST = "room_list";
  static readonly ROOM_JOIN = "room_join";
  static readonly ROOM_LEAVE = "room_leave";
}