70 lines
1.6 KiB
TypeScript
70 lines
1.6 KiB
TypeScript
import { User } from './user.model';
|
|
|
|
export enum MessageType {
|
|
CHAT = 'CHAT',
|
|
PING = 'PING',
|
|
NAME_CHANGE = 'NAME_CHANGE',
|
|
COLOR_CHANGE = 'COLOR_CHANGE',
|
|
PONG = 'PONG',
|
|
SYSTEM = 'SYSTEM',
|
|
USER_JOINED = 'USER_JOINED',
|
|
USER_PARTED = 'USER_PARTED',
|
|
CHAT_ACTION = 'CHAT_ACTION',
|
|
FEDIVERSE_ENGAGEMENT_FOLLOW = 'FEDIVERSE_ENGAGEMENT_FOLLOW',
|
|
FEDIVERSE_ENGAGEMENT_LIKE = 'FEDIVERSE_ENGAGEMENT_LIKE',
|
|
FEDIVERSE_ENGAGEMENT_REPOST = 'FEDIVERSE_ENGAGEMENT_REPOST',
|
|
CONNECTED_USER_INFO = 'CONNECTED_USER_INFO',
|
|
ERROR_USER_DISABLED = 'ERROR_USER_DISABLED',
|
|
ERROR_NEEDS_REGISTRATION = 'ERROR_NEEDS_REGISTRATION',
|
|
ERROR_MAX_CONNECTIONS_EXCEEDED = 'ERROR_MAX_CONNECTIONS_EXCEEDED',
|
|
VISIBILITY_UPDATE = 'VISIBILITY-UPDATE',
|
|
}
|
|
|
|
export interface SocketEvent {
|
|
id: string;
|
|
timestamp: Date;
|
|
type: MessageType;
|
|
}
|
|
|
|
export interface ConnectedClientInfoEvent extends SocketEvent {
|
|
user: User;
|
|
}
|
|
export class ChatEvent implements SocketEvent {
|
|
constructor(message) {
|
|
this.id = message.id;
|
|
this.timestamp = message.timestamp;
|
|
this.type = message.type;
|
|
this.body = message.body;
|
|
if (message.user) {
|
|
this.user = new User(message.user);
|
|
}
|
|
}
|
|
|
|
timestamp: Date;
|
|
|
|
type: MessageType;
|
|
|
|
id: string;
|
|
|
|
user: User;
|
|
|
|
body: string;
|
|
}
|
|
|
|
export interface NameChangeEvent extends SocketEvent {
|
|
user: User;
|
|
oldName: string;
|
|
}
|
|
|
|
export interface MessageVisibilityEvent extends SocketEvent {
|
|
visible: boolean;
|
|
ids: string[];
|
|
}
|
|
|
|
export interface FediverseEvent extends SocketEvent {
|
|
title: string;
|
|
image: string;
|
|
link: string;
|
|
body: string;
|
|
}
|