Improved protocol types

This commit is contained in:
2025-12-23 13:00:34 +01:00
parent 2a4579cf89
commit 3890e36078
2 changed files with 45 additions and 13 deletions
+29 -6
View File
@@ -1,11 +1,34 @@
export interface MessageType<T = string, P = object> {
import { Message } from "./types";
export interface EnumType<T = string, P = object> {
type: T;
params: P;
}
export type Indicator = EnumType<
"typing",
{ user_id: string; channel_id: string }
>;
export interface IndicatorContext {
indicator: Indicator;
expires: number;
}
export type ClientMessage =
| MessageType<"send_message", { channel_id: string; contents: string }>
| MessageType<"delete_message", { message_id: number }>
| MessageType<"edit_message", { message_id: number; new_contents: string }>
| MessageType<"load_chunk", { channel_id: string; chunk_id: number }>
| MessageType<"typing", { channel_id: string }>;
| EnumType<"send_message", { channel_id: string; contents: string }>
| EnumType<"delete_message", { message_id: number }>
| EnumType<"edit_message", { message_id: number; new_contents: string }>
| EnumType<"load_chunk", { channel_id: string; chunk_id: number }>
| EnumType<"typing", { channel_id: string }>;
export type ServerMessage =
| EnumType<"authenticated", { uuid: string; indicators: IndicatorContext[] }>
| EnumType<"temp_message", { message: string }>
| EnumType<"message_create", Message>
| EnumType<"message_update", { message_id: number; contents: string }>
| EnumType<"message_delete", { message_id: number }>
| EnumType<"presence_update", { user_id: String; status: String }>
| EnumType<"indicator", IndicatorContext>
| EnumType<"shutdown", { message: string }>
| EnumType<"chunk", Message[]>;