From 08ca2c620f8702b3c0b4cd67aac0d707da79be9a Mon Sep 17 00:00:00 2001 From: Torben Pi Jensen Date: Sun, 5 Nov 2023 14:00:33 +0100 Subject: [PATCH] Common stuff initial --- common.ts | 1 + parseMessage.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 parseMessage.ts diff --git a/common.ts b/common.ts index 5282330..5ad78da 100644 --- a/common.ts +++ b/common.ts @@ -1,2 +1,3 @@ export * from './dataTypes'; export * from './messageTypes'; +export * from './parseMessage'; diff --git a/parseMessage.ts b/parseMessage.ts new file mode 100644 index 0000000..ae5782d --- /dev/null +++ b/parseMessage.ts @@ -0,0 +1,40 @@ +import { + ChatMessage, + Join, + ListenerJoined, + ListenerLeft, + ListenerList, SearchSong, SearchSongResult, + SendChatMessage, + StuenMessage +} from "./messageTypes"; + +export default function parseMessage(message: string): StuenMessage | null { + try { + const data = JSON.parse(message); + + switch (data.type) { + case 'Join': + return new Join(data.name); + case 'ListenerJoined': + return new ListenerJoined(data.name); + case 'ListenerLeft': + return new ListenerLeft(data.name); + case 'ListenerList': + return new ListenerList(data.names); + case 'SendChatMessage': + return new SendChatMessage(data.message); + case 'ChatMessage': + return new ChatMessage(data.name, data.message); + case 'SearchSong': + return new SearchSong(data.query); + case 'SearchSongResult': + return new SearchSongResult(data.result); + default: + console.error('Unknown message type:', data.type); + return null; + } + } catch (error) { + console.error('Error parsing WebSocket message:', error); + return null; // Handle parsing errors + } +}