frontend client for gemstone. decentralised workplace app
at main 1.1 kB view raw
1import type { WebsocketMessage } from "@/lib/types/messages"; 2import { 3 websocketMessageSchema, 4} from "@/lib/types/messages"; 5import type { Result } from "@/lib/utils/result"; 6import { z } from "zod"; 7 8export const validateWsMessageString = ( 9 data: unknown, 10): Result<string, unknown> => { 11 const { success, error, data: message } = z.string().safeParse(data); 12 if (!success) { 13 console.error("Error decoding websocket message"); 14 console.error(error); 15 return { ok: false, error: z.treeifyError(error) }; 16 } 17 return { ok: true, data: message }; 18}; 19 20export const validateWsMessageType = ( 21 data: unknown, 22): Result<WebsocketMessage, unknown> => { 23 const { 24 success: wsMessageSuccess, 25 error: wsMessageError, 26 data: wsMessage, 27 } = websocketMessageSchema.safeParse(data); 28 if (!wsMessageSuccess) { 29 console.error( 30 "Error parsing websocket message. The data might be the wrong shape.", 31 ); 32 console.error(wsMessageError); 33 return { ok: false, error: z.treeifyError(wsMessageError) }; 34 } 35 return { ok: true, data: wsMessage }; 36};