common/messageTypes.ts
2024-05-04 16:09:35 +02:00

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');
}
}