types.ts
1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { RoomData } from "../room/types";
import { UserData } from "../user/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 RoomInfoMessage implements Message {
readonly type = MessageType.ROOM_INFO;
constructor(public userdata: UserData[]) {}
}
export class RoomUserUpdateMessage implements Message {
readonly type = MessageType.ROOM_USER_UPDATE;
constructor(
public state: "added" | "updated" | "removed",
public userdata: UserData
) {}
}
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";
static readonly ROOM_INFO = "room_info";
static readonly ROOM_USER_UPDATE = "room_user_update";
}