From e6698a135099348b62d295e904580f4341447958 Mon Sep 17 00:00:00 2001 From: Florrie Date: Fri, 10 Jul 2020 20:52:13 -0300 Subject: basic command relay across socket clients --- backend.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'backend.js') diff --git a/backend.js b/backend.js index 048a6c5..418c2eb 100644 --- a/backend.js +++ b/backend.js @@ -7,6 +7,8 @@ import {readFile, writeFile} from 'node:fs/promises' import EventEmitter from 'node:events' import os from 'node:os' +import shortid from 'shortid' + import {getDownloaderFor} from './downloaders.js' import {getMetadataReaderFor} from './metadata-readers.js' import {getPlayer} from './players.js' @@ -58,6 +60,8 @@ class QueuePlayer extends EventEmitter { }) { super() + this.id = shortid.generate() + this.player = null this.playingTrack = null this.queueGrouplike = {name: 'Queue', isTheQueue: true, items: []} @@ -66,6 +70,7 @@ class QueuePlayer extends EventEmitter { this.playedTrackToEnd = false this.timeData = null + this.time = null this.getPlayer = getPlayer this.getRecordFor = getRecordFor @@ -84,6 +89,7 @@ class QueuePlayer extends EventEmitter { if (this.playingTrack) { const oldTimeData = this.timeData this.timeData = data + this.time = data.curSecTotal this.emit('received time data', data, oldTimeData, this) } }) @@ -400,6 +406,7 @@ class QueuePlayer extends EventEmitter { } this.timeData = null + this.time = null this.playingTrack = item this.emit('playing', this.playingTrack, oldTrack, startTime, this) @@ -540,6 +547,7 @@ class QueuePlayer extends EventEmitter { const oldTrack = this.playingTrack this.playingTrack = null this.timeData = null + this.time = null this.emit('playing', null, oldTrack, 0, this) } } @@ -549,11 +557,21 @@ class QueuePlayer extends EventEmitter { } seekAhead(seconds) { + this.time += seconds this.player.seekAhead(seconds) + this.emit('seek-ahead', +seconds) } seekBack(seconds) { + this.time -= seconds this.player.seekBack(seconds) + this.emit('seek-back', +seconds) + } + + seekTo(timeInSecs) { + this.time = timeInSecs + this.player.seekTo(timeInSecs) + this.emit('seek-to', +timeInSecs) } seekTo(seconds) { @@ -566,42 +584,50 @@ class QueuePlayer extends EventEmitter { togglePause() { this.player.togglePause() + this.emit('toggle-pause') } setPause(value) { this.player.setPause(value) + this.emit('set-pause', !!value) } toggleLoop() { this.player.toggleLoop() + this.emit('toggle-loop') } setLoop(value) { this.player.setLoop(value) + this.emit('set-loop', !!value) } volUp(amount = 10) { this.player.volUp(amount) + this.emit('vol-up', +amount) } volDown(amount = 10) { this.player.volDown(amount) + this.emit('vol-down', +amount) } setVolume(value) { this.player.setVolume(value) + this.emit('set-volume', +value) } setVolumeMultiplier(value) { - this.player.setVolumeMultiplier(value); + this.player.setVolumeMultiplier(value) } fadeIn() { - return this.player.fadeIn(); + return this.player.fadeIn() } setPauseNextTrack(value) { this.pauseNextTrack = !!value + this.emit('set-pause-next-track', !!value) } setLoopQueueAtEnd(value) { -- cgit 1.3.0-6-gf8a5