96 lines
3.3 KiB
TypeScript
96 lines
3.3 KiB
TypeScript
import {
|
|
AddSongToPlaylist,
|
|
ChatMessage,
|
|
CreatePlaylist,
|
|
CurrentQueue,
|
|
CurrentSong,
|
|
GetPlaylist,
|
|
Join,
|
|
ListenerJoined,
|
|
ListenerLeft,
|
|
ListenerList,
|
|
Playlists,
|
|
PlaylistSongs,
|
|
GetOtherPlaylists,
|
|
QueueSong, RemoveFromAutoPlay, RemovePlaylist,
|
|
RemoveSongFromPlaylist,
|
|
ReorderSong,
|
|
SearchSong,
|
|
SearchSongResult,
|
|
SendChatMessage, Shuffle,
|
|
SkipSong,
|
|
SongLikes,
|
|
StuenMessage,
|
|
ToggleSongLike, ToggleTag,
|
|
UnqueueSong, OthersPlaylists
|
|
} 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);
|
|
case 'QueueSong':
|
|
return new QueueSong(data.song);
|
|
case 'CurrentQueue':
|
|
return new CurrentQueue(data.songs)
|
|
case 'CurrentSong':
|
|
return new CurrentSong(data.song);
|
|
case 'UnqueueSong':
|
|
return new UnqueueSong(data.position, data.all);
|
|
case 'ReorderSong':
|
|
return new ReorderSong(data.positionToMove, data.placePosition);
|
|
case 'SkipSong':
|
|
return new SkipSong();
|
|
case 'ToggleSongLike':
|
|
return new ToggleSongLike();
|
|
case 'SongLikes':
|
|
return new SongLikes(data.listeners);
|
|
case 'Playlists':
|
|
return new Playlists(data.playlists);
|
|
case 'GetPlaylist':
|
|
return new GetPlaylist(data.playlist);
|
|
case 'PlaylistSongs':
|
|
return new PlaylistSongs(data.playlist);
|
|
case 'CreatePlaylist':
|
|
return new CreatePlaylist(data.title);
|
|
case 'RemovePlaylist':
|
|
return new RemovePlaylist(data.title);
|
|
case 'AddSongToPlaylist':
|
|
return new AddSongToPlaylist(data.song, data.playlist);
|
|
case 'RemoveSongFromPlaylist':
|
|
return new RemoveSongFromPlaylist(data.song, data.playlist);
|
|
case 'GetOtherPlaylists':
|
|
return new GetOtherPlaylists();
|
|
case 'ToggleTag':
|
|
return new ToggleTag(data.song, data.tag);
|
|
case 'Shuffle':
|
|
return new Shuffle();
|
|
case 'RemoveFromAutoPlay':
|
|
return new 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
|
|
}
|
|
}
|