Added playlist

This commit is contained in:
Torben Pi Jensen 2024-02-03 14:32:03 +01:00
parent 9345dd1fd0
commit 829e9c599b
4 changed files with 52 additions and 10 deletions

View File

@ -26,3 +26,13 @@ export class Playlist {
constructor(public title: string, public listener: string, public songs: Song[]) { constructor(public title: string, public listener: string, public songs: Song[]) {
} }
} }
export class PlaylistDescription {
public title: string;
public listener: string;
constructor(title: string, listener: string) {
this.title = title;
this.listener = listener;
}
}

View File

@ -1,4 +1,4 @@
import {Song, PlayingSong, QueuedSong, Playlist} from "./dataTypes"; import {Song, PlayingSong, QueuedSong, Playlist, PlaylistDescription} from "./dataTypes";
export type StuenMessages = export type StuenMessages =
ListenerLeft ListenerLeft
@ -15,11 +15,13 @@ export type StuenMessages =
| ReorderSong | ReorderSong
| SkipSong | SkipSong
| SongLikes | SongLikes
| CreatePlaylist
| ToggleSongLike | ToggleSongLike
| CreatePlaylist
| AddSongToPlaylist | AddSongToPlaylist
| RemoveSongFromPlaylist | RemoveSongFromPlaylist
| Playlists; | Playlists
| GetPlaylist
| PlaylistSongs
export abstract class StuenMessage { export abstract class StuenMessage {
constructor(public type: string) { constructor(public type: string) {
@ -132,11 +134,22 @@ export class CreatePlaylist extends StuenMessage {
} }
export class Playlists extends StuenMessage { export class Playlists extends StuenMessage {
constructor(public playlists: Playlist[]) { constructor(public playlists: PlaylistDescription[]) {
super('Playlists'); super('Playlists');
} }
} }
export class GetPlaylist extends StuenMessage {
constructor(public playlist: PlaylistDescription) {
super('GetPlaylist');
}
}
export class PlaylistSongs extends StuenMessage {
constructor(public playlist: Playlist) {
super('PlaylistSongs');
}
}
export class AddSongToPlaylist extends StuenMessage { export class AddSongToPlaylist extends StuenMessage {
constructor(public song: Song, public playlist: string) { constructor(public song: Song, public playlist: string) {
super('AddSongToPlaylist'); super('AddSongToPlaylist');
@ -145,6 +158,6 @@ export class AddSongToPlaylist extends StuenMessage {
export class RemoveSongFromPlaylist extends StuenMessage { export class RemoveSongFromPlaylist extends StuenMessage {
constructor(public song: Song, public playlist: string) { constructor(public song: Song, public playlist: string) {
super('RemoveSongToPlaylist'); super('RemoveSongFromPlaylist');
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "stuen-common", "name": "stuen-common",
"version": "1.2.0", "version": "1.2.1",
"main": "dist/common.js", "main": "dist/common.js",
"type": "commonjs", "type": "commonjs",
"types": "dist/common.d.ts", "types": "dist/common.d.ts",

View File

@ -1,12 +1,27 @@
import { import {
AddSongToPlaylist, AddSongToPlaylist,
ChatMessage, CreatePlaylist, CurrentQueue, CurrentSong, ChatMessage,
CreatePlaylist,
CurrentQueue,
CurrentSong,
GetPlaylist,
Join, Join,
ListenerJoined, ListenerJoined,
ListenerLeft, ListenerLeft,
ListenerList, Playlists, QueueSong, RemoveSongFromPlaylist, ReorderSong, SearchSong, SearchSongResult, ListenerList,
SendChatMessage, SkipSong, SongLikes, Playlists,
StuenMessage, ToggleSongLike, UnqueueSong PlaylistSongs,
QueueSong,
RemoveSongFromPlaylist,
ReorderSong,
SearchSong,
SearchSongResult,
SendChatMessage,
SkipSong,
SongLikes,
StuenMessage,
ToggleSongLike,
UnqueueSong
} from "./messageTypes"; } from "./messageTypes";
export default function parseMessage(message: string): StuenMessage | null { export default function parseMessage(message: string): StuenMessage | null {
@ -48,6 +63,10 @@ export default function parseMessage(message: string): StuenMessage | null {
return new SongLikes(data.listeners); return new SongLikes(data.listeners);
case 'Playlists': case 'Playlists':
return new Playlists(data.playlists); return new Playlists(data.playlists);
case 'GetPlaylist':
return new GetPlaylist(data.playlist);
case 'PlaylistSongs':
return new PlaylistSongs(data.playlist);
case 'CreatePlaylist': case 'CreatePlaylist':
return new CreatePlaylist(data.title); return new CreatePlaylist(data.title);
case 'AddSongToPlaylist': case 'AddSongToPlaylist':