3 Commits
1.1.4 ... 1.1.6

Author SHA1 Message Date
Torben Pi Jensen
4b88313d0e add like 2023-12-04 21:22:39 +01:00
Torben Pi Jensen
a671b53634 add like 2023-12-04 21:22:34 +01:00
Torben Pi Jensen
e52358c620 add like 2023-12-04 20:44:18 +01:00
7 changed files with 53 additions and 7 deletions

View File

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

20
dist/messageTypes.js vendored
View File

@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
}; };
})(); })();
exports.__esModule = true; exports.__esModule = true;
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.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 () { var StuenMessage = /** @class */ (function () {
function StuenMessage(type) { function StuenMessage(type) {
this.type = type; this.type = type;
@@ -165,3 +165,21 @@ var SkipSong = /** @class */ (function (_super) {
return SkipSong; return SkipSong;
}(StuenMessage)); }(StuenMessage));
exports.SkipSong = SkipSong; exports.SkipSong = SkipSong;
var ToggleSongLike = /** @class */ (function (_super) {
__extends(ToggleSongLike, _super);
function ToggleSongLike() {
return _super.call(this, 'ToggleSongLike') || this;
}
return ToggleSongLike;
}(StuenMessage));
exports.ToggleSongLike = ToggleSongLike;
var SongLikes = /** @class */ (function (_super) {
__extends(SongLikes, _super);
function SongLikes(listeners) {
var _this = _super.call(this, 'SongLikes') || this;
_this.listeners = listeners;
return _this;
}
return SongLikes;
}(StuenMessage));
exports.SongLikes = SongLikes;

View File

@@ -1 +1 @@
{"version":3,"file":"messageTypes.js","sourceRoot":"","sources":["../messageTypes.ts"],"names":[],"mappings":"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"} {"version":3,"file":"messageTypes.js","sourceRoot":"","sources":["../messageTypes.ts"],"names":[],"mappings":"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"}

View File

@@ -33,6 +33,10 @@ function parseMessage(message) {
return new messageTypes_1.ReorderSong(data.positionToMove, data.placePosition); return new messageTypes_1.ReorderSong(data.positionToMove, data.placePosition);
case 'SkipSong': case 'SkipSong':
return new messageTypes_1.SkipSong(); return new messageTypes_1.SkipSong();
case 'ToggleSongLike':
return new messageTypes_1.ToggleSongLike();
case 'SongLikes':
return new messageTypes_1.SongLikes(data.listeners);
default: default:
console.error('Unknown message type:', data.type); console.error('Unknown message type:', data.type);
return null; return null;

View File

@@ -1 +1 @@
{"version":3,"file":"parseMessage.js","sourceRoot":"","sources":["../parseMessage.ts"],"names":[],"mappings":";;AAAA,+CAQwB;AAExB,SAAwB,YAAY,CAAC,OAAe;IAChD,IAAI;QACA,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,MAAM;gBACP,OAAO,IAAI,mBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,KAAK,gBAAgB;gBACjB,OAAO,IAAI,6BAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,cAAc;gBACf,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,KAAK,cAAc;gBACf,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,KAAK,iBAAiB;gBAClB,OAAO,IAAI,8BAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,KAAK,aAAa;gBACd,OAAO,IAAI,0BAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,KAAK,YAAY;gBACb,OAAO,IAAI,yBAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,kBAAkB;gBACnB,OAAO,IAAI,+BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,WAAW;gBACZ,OAAO,IAAI,wBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,KAAK,cAAc;gBACf,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvC,KAAK,aAAa;gBACd,OAAO,IAAI,0BAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC;gBACI,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC;SACnB;KACJ;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,CAAC,wBAAwB;KACxC;AACL,CAAC;AAnCD,+BAmCC"} {"version":3,"file":"parseMessage.js","sourceRoot":"","sources":["../parseMessage.ts"],"names":[],"mappings":";;AAAA,+CAQwB;AAExB,SAAwB,YAAY,CAAC,OAAe;IAChD,IAAI;QACA,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,MAAM;gBACP,OAAO,IAAI,mBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,KAAK,gBAAgB;gBACjB,OAAO,IAAI,6BAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,cAAc;gBACf,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,KAAK,cAAc;gBACf,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,KAAK,iBAAiB;gBAClB,OAAO,IAAI,8BAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,KAAK,aAAa;gBACd,OAAO,IAAI,0BAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,KAAK,YAAY;gBACb,OAAO,IAAI,yBAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,kBAAkB;gBACnB,OAAO,IAAI,+BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,WAAW;gBACZ,OAAO,IAAI,wBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,KAAK,cAAc;gBACf,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvC,KAAK,aAAa;gBACd,OAAO,IAAI,0BAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,KAAK,aAAa;gBACd,OAAO,IAAI,0BAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACpD,KAAK,aAAa;gBACd,OAAO,IAAI,0BAAW,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACpE,KAAK,UAAU;gBACX,OAAO,IAAI,uBAAQ,EAAE,CAAC;YAC1B,KAAK,gBAAgB;gBACjB,OAAO,IAAI,6BAAc,EAAE,CAAC;YAChC,KAAK,WAAW;gBACZ,OAAO,IAAI,wBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC;gBACI,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC;SACnB;KACJ;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,CAAC,wBAAwB;KACxC;AACL,CAAC;AA7CD,+BA6CC"}

View File

@@ -13,7 +13,9 @@ export type StuenMessages =
| CurrentSong | CurrentSong
| UnqueueSong | UnqueueSong
| ReorderSong | ReorderSong
| SkipSong; | SkipSong
| SongLikes
| ToggleSongLike;
export abstract class StuenMessage { export abstract class StuenMessage {
constructor(public type: string) { constructor(public type: string) {
@@ -107,3 +109,14 @@ export class SkipSong extends StuenMessage {
} }
} }
export class ToggleSongLike extends StuenMessage {
constructor() {
super('ToggleSongLike');
}
}
export class SongLikes extends StuenMessage {
constructor(public listeners: string[]) {
super('SongLikes');
}
}

View File

@@ -4,8 +4,8 @@ import {
ListenerJoined, ListenerJoined,
ListenerLeft, ListenerLeft,
ListenerList, QueueSong, ReorderSong, SearchSong, SearchSongResult, ListenerList, QueueSong, ReorderSong, SearchSong, SearchSongResult,
SendChatMessage, SkipSong, SendChatMessage, SkipSong, SongLikes,
StuenMessage, UnqueueSong StuenMessage, ToggleSongLike, UnqueueSong
} from "./messageTypes"; } from "./messageTypes";
export default function parseMessage(message: string): StuenMessage | null { export default function parseMessage(message: string): StuenMessage | null {
@@ -41,6 +41,10 @@ export default function parseMessage(message: string): StuenMessage | null {
return new ReorderSong(data.positionToMove, data.placePosition); return new ReorderSong(data.positionToMove, data.placePosition);
case 'SkipSong': case 'SkipSong':
return new SkipSong(); return new SkipSong();
case 'ToggleSongLike':
return new ToggleSongLike();
case 'SongLikes':
return new SongLikes(data.listeners);
default: default:
console.error('Unknown message type:', data.type); console.error('Unknown message type:', data.type);
return null; return null;