Huge restructuring of frontend code. 1.2.0 prerelease

This commit is contained in:
2020-10-24 00:32:14 +02:00
parent b645a1ff94
commit 91a4cea453
12 changed files with 506 additions and 413 deletions

51
js/mediaPlayer.js Normal file
View File

@@ -0,0 +1,51 @@
export const BrowserModMediaPlayerMixin = (C) => class extends C {
constructor() {
super();
this.player = new Audio();
for (const event of ["play", "pause", "ended", "volumechange"]) {
this.player.addEventListener(event, () => this.player_update());
}
window.addEventListener("click", () => this.player.play(), {once: true});
}
player_update(ev) {
this.sendUpdate({player: {
volume: this.player.volume,
muted: this.player.muted,
src: this.player.src,
state: this.player_state,
}})
}
get player_state() {
if (!this.player.src) return "stopped";
if (this.player.ended) return "stopped";
if (this.player.paused) return "paused";
return "playing";
}
player_play(src) {
if(src)
this.player.src = src;
this.player.play();
}
player_pause() {
this.player.pause();
}
player_stop() {
this.player.pause();
this.player.src = null;
}
player_set_volume(level) {
if(level === undefined) return;
this.player.volume = level;
}
player_mute(mute) {
if(mute === undefined)
mute = !this.player.muted;
this.player.muted = Boolean(mute);
}
}