190 lines
4.1 KiB
TypeScript
190 lines
4.1 KiB
TypeScript
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');
|
|
}
|
|
}
|