socket-events.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { User } from './user.model';
  2. export enum MessageType {
  3. CHAT = 'CHAT',
  4. PING = 'PING',
  5. NAME_CHANGE = 'NAME_CHANGE',
  6. COLOR_CHANGE = 'COLOR_CHANGE',
  7. PONG = 'PONG',
  8. SYSTEM = 'SYSTEM',
  9. USER_JOINED = 'USER_JOINED',
  10. USER_PARTED = 'USER_PARTED',
  11. CHAT_ACTION = 'CHAT_ACTION',
  12. FEDIVERSE_ENGAGEMENT_FOLLOW = 'FEDIVERSE_ENGAGEMENT_FOLLOW',
  13. FEDIVERSE_ENGAGEMENT_LIKE = 'FEDIVERSE_ENGAGEMENT_LIKE',
  14. FEDIVERSE_ENGAGEMENT_REPOST = 'FEDIVERSE_ENGAGEMENT_REPOST',
  15. CONNECTED_USER_INFO = 'CONNECTED_USER_INFO',
  16. ERROR_USER_DISABLED = 'ERROR_USER_DISABLED',
  17. ERROR_NEEDS_REGISTRATION = 'ERROR_NEEDS_REGISTRATION',
  18. ERROR_MAX_CONNECTIONS_EXCEEDED = 'ERROR_MAX_CONNECTIONS_EXCEEDED',
  19. VISIBILITY_UPDATE = 'VISIBILITY-UPDATE',
  20. }
  21. export interface SocketEvent {
  22. id: string;
  23. timestamp: Date;
  24. type: MessageType;
  25. }
  26. export interface ConnectedClientInfoEvent extends SocketEvent {
  27. user: User;
  28. }
  29. export class ChatEvent implements SocketEvent {
  30. constructor(message) {
  31. this.id = message.id;
  32. this.timestamp = message.timestamp;
  33. this.type = message.type;
  34. this.body = message.body;
  35. if (message.user) {
  36. this.user = new User(message.user);
  37. }
  38. }
  39. timestamp: Date;
  40. type: MessageType;
  41. id: string;
  42. user: User;
  43. body: string;
  44. }
  45. export interface NameChangeEvent extends SocketEvent {
  46. user: User;
  47. oldName: string;
  48. }
  49. export interface MessageVisibilityEvent extends SocketEvent {
  50. visible: boolean;
  51. ids: string[];
  52. }
  53. export interface FediverseEvent extends SocketEvent {
  54. title: string;
  55. image: string;
  56. link: string;
  57. body: string;
  58. }