From cde3d62b1c0a1c95643037ca03e95bac178118d2 Mon Sep 17 00:00:00 2001 From: Tobias Berger Date: Mon, 17 Jan 2022 16:16:46 +0100 Subject: [PATCH] Add CURRENTLY_TYPING Message --- ServerMessage.ts | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/ServerMessage.ts b/ServerMessage.ts index 9465383..1b9ef1b 100644 --- a/ServerMessage.ts +++ b/ServerMessage.ts @@ -3,6 +3,7 @@ export enum MessageType { TEXT = 1, ID_RESPONSE = 3, TYPING = 4, + CURRENTLY_TYPING = 5, } export type ServerMessage = { @@ -91,7 +92,33 @@ export function isIdResponseMessage(obj: unknown): obj is IdResponseMessage { export type TypingMessage = ServerMessage & { type: MessageType.TYPING; -} +}; export function isTypingMessage(obj: unknown): obj is TypingMessage { return isServerMessage(obj, MessageType.TYPING); } + +export type CurrentlyTypingMessage = ServerMessage & { + type: MessageType.CURRENTLY_TYPING; + currently: string[]; +}; +export function isCurrentlyTypingMessage( + obj: unknown +): obj is CurrentlyTypingMessage { + if (!isServerMessage(obj, MessageType.CURRENTLY_TYPING)) { + return false; + } + if ( + !Object.hasOwnProperty.call(obj, "currently") || + typeof obj !== "object" || + !( + (obj as ServerMessage & { currently: unknown }).currently instanceof Array + ) || + Array.prototype.some.call( + (obj as ServerMessage & { currently: unknown[] }).currently, + (element) => typeof element !== "string" + ) + ) { + return false; + } + return true; +}