"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var messageTypes_1 = require("./messageTypes"); function parseMessage(message) { try { var data = JSON.parse(message); switch (data.type) { case 'Join': return new messageTypes_1.Join(data.name); case 'ListenerJoined': return new messageTypes_1.ListenerJoined(data.name); case 'ListenerLeft': return new messageTypes_1.ListenerLeft(data.name); case 'ListenerList': return new messageTypes_1.ListenerList(data.names); case 'SendChatMessage': return new messageTypes_1.SendChatMessage(data.message); case 'ChatMessage': return new messageTypes_1.ChatMessage(data.name, data.message); case 'SearchSong': return new messageTypes_1.SearchSong(data.query); case 'SearchSongResult': return new messageTypes_1.SearchSongResult(data.result); case 'QueueSong': return new messageTypes_1.QueueSong(data.song); case 'CurrentQueue': return new messageTypes_1.CurrentQueue(data.songs); case 'CurrentSong': return new messageTypes_1.CurrentSong(data.song); case 'UnqueueSong': return new messageTypes_1.UnqueueSong(data.position, data.all); case 'ReorderSong': return new messageTypes_1.ReorderSong(data.positionToMove, data.placePosition); case 'SkipSong': return new messageTypes_1.SkipSong(); case 'ToggleSongLike': return new messageTypes_1.ToggleSongLike(); case 'SongLikes': return new messageTypes_1.SongLikes(data.listeners); case 'Playlists': return new messageTypes_1.Playlists(data.playlists); case 'GetPlaylist': return new messageTypes_1.GetPlaylist(data.playlist); case 'PlaylistSongs': return new messageTypes_1.PlaylistSongs(data.playlist); case 'CreatePlaylist': return new messageTypes_1.CreatePlaylist(data.title); case 'RemovePlaylist': return new messageTypes_1.RemovePlaylist(data.title); case 'AddSongToPlaylist': return new messageTypes_1.AddSongToPlaylist(data.song, data.playlist); case 'RemoveSongFromPlaylist': return new messageTypes_1.RemoveSongFromPlaylist(data.song, data.playlist); case 'GetAllPlaylists': return new messageTypes_1.GetAllPlaylists(); case 'ToggleTag': return new messageTypes_1.ToggleTag(data.song, data.tag); case 'Shuffle': return new messageTypes_1.Shuffle(); case 'RemoveFromAutoPlay': return new messageTypes_1.RemoveFromAutoPlay(); default: console.error('Unknown message type:', data.type); return null; } } catch (error) { console.error('Error parsing WebSocket message:', error); return null; // Handle parsing errors } } exports.default = parseMessage;