import {Song, PlayingSong, QueuedSong, Playlist, PlaylistDescription} from "./dataTypes"; export type StuenMessages = ListenerList | SendChatMessage | SearchSong | SearchSongResult | Join | QueueSong | CurrentQueue | CurrentSong | UnqueueSong | ReorderSong | SkipSong | SongLikes | ToggleSongLike | CreatePlaylist | RemovePlaylist | AddSongToPlaylist | RemoveSongFromPlaylist | Playlists | GetPlaylist | PlaylistSongs | GetOtherPlaylists | ToggleTag | Shuffle | RemoveFromAutoPlay export abstract class StuenMessage { constructor(public type: string) { } } export class Join extends StuenMessage { constructor(public name: string) { super('Join'); } } export class ListenerList extends StuenMessage { constructor(public names: string[]) { super('ListenerList'); } } export class SendChatMessage extends StuenMessage { constructor(public message: string) { super('SendChatMessage'); } } export class ChatMessage extends StuenMessage { constructor(public name: string, public message: string) { super('ChatMessage'); } } export class SearchSong extends StuenMessage { constructor(public query: string) { super('SearchSong'); } } export class SearchSongResult extends StuenMessage { constructor(public result: Song[]) { super('SearchSongResult'); } } export class QueueSong extends StuenMessage { constructor(public song: Song) { super('QueueSong'); } } export class CurrentQueue extends StuenMessage { constructor(public songs: QueuedSong[]) { super('CurrentQueue'); } } export class CurrentSong extends StuenMessage { constructor(public song: PlayingSong | null) { super('CurrentSong'); } } export class UnqueueSong extends StuenMessage { constructor(public position: number | null, public all: boolean | undefined = false) { super('UnqueueSong'); } } export class ReorderSong extends StuenMessage { constructor(public positionToMove: number, public placePosition: number) { super('ReorderSong'); } } export class SkipSong extends StuenMessage { constructor() { super('SkipSong'); } } export class ToggleSongLike extends StuenMessage { constructor() { super('ToggleSongLike'); } } export class SongLikes extends StuenMessage { constructor(public listeners: string[]) { super('SongLikes'); } } export class CreatePlaylist extends StuenMessage { constructor(public title: string) { super('CreatePlaylist'); } } export class RemovePlaylist extends StuenMessage { constructor(public title: string) { super('RemovePlaylist'); } } export class Playlists extends StuenMessage { constructor(public playlists: PlaylistDescription[]) { 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 GetOtherPlaylists extends StuenMessage { constructor() { super('GetOtherPlaylists'); } } export class OthersPlaylists extends StuenMessage { constructor(public playlists: PlaylistDescription[]) { super('OthersPlaylists'); } } 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('RemoveSongFromPlaylist'); } } export class ToggleTag extends StuenMessage { constructor(public song: Song, public tag: string) { super('ToggleTag'); } } export class Shuffle extends StuenMessage { constructor() { super('Shuffle'); } } export class RemoveFromAutoPlay extends StuenMessage { constructor() { super('RemoveFromAutoPlay'); } }