Added playlist

This commit is contained in:
Torben Pi Jensen 2024-02-03 10:31:04 +01:00
parent 29d8ee56f6
commit 9ce896cd33
8 changed files with 133 additions and 8 deletions

View File

@ -21,3 +21,8 @@ export class PlayingSong extends QueuedSong {
super(type, title, songId, image, listener);
}
}
export class Playlist {
constructor(public title: string, public listener: string, public songs: Song[]) {
}
}

6
dist/dataTypes.d.ts vendored
View File

@ -18,3 +18,9 @@ export declare class PlayingSong extends QueuedSong {
position: number;
constructor(type: SongType, title: string, songId: string, image: string, listener: string, length: number, position: number);
}
export declare class Playlist {
title: string;
listener: string;
songs: Song[];
constructor(title: string, listener: string, songs: Song[]);
}

11
dist/dataTypes.js vendored
View File

@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
};
})();
exports.__esModule = true;
exports.PlayingSong = exports.QueuedSong = exports.Song = exports.SongType = void 0;
exports.Playlist = exports.PlayingSong = exports.QueuedSong = exports.Song = exports.SongType = void 0;
var SongType;
(function (SongType) {
SongType[SongType["YouTube"] = 0] = "YouTube";
@ -52,3 +52,12 @@ var PlayingSong = /** @class */ (function (_super) {
return PlayingSong;
}(QueuedSong));
exports.PlayingSong = PlayingSong;
var Playlist = /** @class */ (function () {
function Playlist(title, listener, songs) {
this.title = title;
this.listener = listener;
this.songs = songs;
}
return Playlist;
}());
exports.Playlist = Playlist;

View File

@ -1,5 +1,5 @@
import { Song, PlayingSong, QueuedSong } from "./dataTypes";
export declare type StuenMessages = ListenerLeft | ListenerList | ListenerJoined | SendChatMessage | SearchSong | SearchSongResult | Join | QueueSong | CurrentQueue | CurrentSong | UnqueueSong | ReorderSong | SkipSong | SongLikes | ToggleSongLike;
import { Song, PlayingSong, QueuedSong, Playlist } from "./dataTypes";
export declare type StuenMessages = ListenerLeft | ListenerList | ListenerJoined | SendChatMessage | SearchSong | SearchSongResult | Join | QueueSong | CurrentQueue | CurrentSong | UnqueueSong | ReorderSong | SkipSong | SongLikes | CreatePlaylist | ToggleSongLike | AddSongToPlaylist | RemoveSongFromPlaylist | Playlists;
export declare abstract class StuenMessage {
type: string;
constructor(type: string);
@ -69,3 +69,21 @@ export declare class SongLikes extends StuenMessage {
listeners: string[];
constructor(listeners: string[]);
}
export declare class CreatePlaylist extends StuenMessage {
title: string;
constructor(title: string);
}
export declare class Playlists extends StuenMessage {
playlists: Playlist[];
constructor(playlists: Playlist[]);
}
export declare class AddSongToPlaylist extends StuenMessage {
song: Song;
playlist: string;
constructor(song: Song, playlist: string);
}
export declare class RemoveSongFromPlaylist extends StuenMessage {
song: Song;
playlist: string;
constructor(song: Song, playlist: string);
}

44
dist/messageTypes.js vendored
View File

@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
};
})();
exports.__esModule = true;
exports.SongLikes = exports.ToggleSongLike = exports.SkipSong = exports.ReorderSong = exports.UnqueueSong = exports.CurrentSong = exports.CurrentQueue = exports.QueueSong = exports.SearchSongResult = exports.SearchSong = exports.ChatMessage = exports.SendChatMessage = exports.ListenerList = exports.ListenerLeft = exports.ListenerJoined = exports.Join = exports.StuenMessage = void 0;
exports.RemoveSongFromPlaylist = exports.AddSongToPlaylist = exports.Playlists = exports.CreatePlaylist = exports.SongLikes = exports.ToggleSongLike = exports.SkipSong = exports.ReorderSong = exports.UnqueueSong = exports.CurrentSong = exports.CurrentQueue = exports.QueueSong = exports.SearchSongResult = exports.SearchSong = exports.ChatMessage = exports.SendChatMessage = exports.ListenerList = exports.ListenerLeft = exports.ListenerJoined = exports.Join = exports.StuenMessage = void 0;
var StuenMessage = /** @class */ (function () {
function StuenMessage(type) {
this.type = type;
@ -183,3 +183,45 @@ var SongLikes = /** @class */ (function (_super) {
return SongLikes;
}(StuenMessage));
exports.SongLikes = SongLikes;
var CreatePlaylist = /** @class */ (function (_super) {
__extends(CreatePlaylist, _super);
function CreatePlaylist(title) {
var _this = _super.call(this, 'CreatePlaylist') || this;
_this.title = title;
return _this;
}
return CreatePlaylist;
}(StuenMessage));
exports.CreatePlaylist = CreatePlaylist;
var Playlists = /** @class */ (function (_super) {
__extends(Playlists, _super);
function Playlists(playlists) {
var _this = _super.call(this, 'Playlists') || this;
_this.playlists = playlists;
return _this;
}
return Playlists;
}(StuenMessage));
exports.Playlists = Playlists;
var AddSongToPlaylist = /** @class */ (function (_super) {
__extends(AddSongToPlaylist, _super);
function AddSongToPlaylist(song, playlist) {
var _this = _super.call(this, 'AddSongToPlaylist') || this;
_this.song = song;
_this.playlist = playlist;
return _this;
}
return AddSongToPlaylist;
}(StuenMessage));
exports.AddSongToPlaylist = AddSongToPlaylist;
var RemoveSongFromPlaylist = /** @class */ (function (_super) {
__extends(RemoveSongFromPlaylist, _super);
function RemoveSongFromPlaylist(song, playlist) {
var _this = _super.call(this, 'RemoveSongToPlaylist') || this;
_this.song = song;
_this.playlist = playlist;
return _this;
}
return RemoveSongFromPlaylist;
}(StuenMessage));
exports.RemoveSongFromPlaylist = RemoveSongFromPlaylist;

View File

@ -37,6 +37,14 @@ function parseMessage(message) {
return new messageTypes_1.ToggleSongLike();
case 'SongLikes':
return new messageTypes_1.SongLikes(data.listeners);
case 'Playlists':
return new messageTypes_1.Playlists(data.playlists);
case 'CreatePlaylist':
return new messageTypes_1.CreatePlaylist(data.title);
case 'AddSongToPlaylist':
return new messageTypes_1.AddSongToPlaylist(data.song, data.playlist);
case 'RemoveSongFromPlaylist':
return new messageTypes_1.RemoveSongFromPlaylist(data.song, data.playlist);
default:
console.error('Unknown message type:', data.type);
return null;

View File

@ -1,4 +1,4 @@
import {Song, PlayingSong, QueuedSong} from "./dataTypes";
import {Song, PlayingSong, QueuedSong, Playlist} from "./dataTypes";
export type StuenMessages =
ListenerLeft
@ -15,7 +15,11 @@ export type StuenMessages =
| ReorderSong
| SkipSong
| SongLikes
| ToggleSongLike;
| CreatePlaylist
| ToggleSongLike
| AddSongToPlaylist
| RemoveSongFromPlaylist
| Playlists;
export abstract class StuenMessage {
constructor(public type: string) {
@ -120,3 +124,27 @@ export class SongLikes extends StuenMessage {
super('SongLikes');
}
}
export class CreatePlaylist extends StuenMessage {
constructor(public title: string) {
super('CreatePlaylist');
}
}
export class Playlists extends StuenMessage {
constructor(public playlists: Playlist[]) {
super('Playlists');
}
}
export class AddSongToPlaylist extends StuenMessage {
constructor(public song: Song, public playlist: string) {
super('AddSongToPlaylist');
}
}
export class RemoveSongFromPlaylist extends StuenMessage {
constructor(public song: Song, public playlist: string) {
super('RemoveSongToPlaylist');
}
}

View File

@ -1,9 +1,10 @@
import {
ChatMessage, CurrentQueue, CurrentSong,
AddSongToPlaylist,
ChatMessage, CreatePlaylist, CurrentQueue, CurrentSong,
Join,
ListenerJoined,
ListenerLeft,
ListenerList, QueueSong, ReorderSong, SearchSong, SearchSongResult,
ListenerList, Playlists, QueueSong, RemoveSongFromPlaylist, ReorderSong, SearchSong, SearchSongResult,
SendChatMessage, SkipSong, SongLikes,
StuenMessage, ToggleSongLike, UnqueueSong
} from "./messageTypes";
@ -45,6 +46,14 @@ export default function parseMessage(message: string): StuenMessage | null {
return new ToggleSongLike();
case 'SongLikes':
return new SongLikes(data.listeners);
case 'Playlists':
return new Playlists(data.playlists);
case 'CreatePlaylist':
return new CreatePlaylist(data.title);
case 'AddSongToPlaylist':
return new AddSongToPlaylist(data.song, data.playlist);
case 'RemoveSongFromPlaylist':
return new RemoveSongFromPlaylist(data.song, data.playlist);
default:
console.error('Unknown message type:', data.type);
return null;