From d00b26b23d9b3fc1e54a4d117366f0f22e664135 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 | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) (limited to 'backend.js') diff --git a/backend.js b/backend.js index d2d0138..f3d8cfd 100644 --- a/backend.js +++ b/backend.js @@ -8,6 +8,7 @@ const { getMetadataReaderFor } = require('./metadata-readers') const { getPlayer } = require('./players') const RecordStore = require('./record-store') const os = require('os') +const shortid = require('shortid') const { getTimeStringsFromSec, @@ -62,6 +63,8 @@ class QueuePlayer extends EventEmitter { }) { super() + this.id = shortid.generate() + this.player = null this.playingTrack = null this.queueGrouplike = {name: 'Queue', isTheQueue: true, items: []} @@ -69,6 +72,7 @@ class QueuePlayer extends EventEmitter { this.playedTrackToEnd = false this.timeData = null + this.time = null this.getPlayer = getPlayer this.getRecordFor = getRecordFor @@ -86,6 +90,7 @@ class QueuePlayer extends EventEmitter { this.player.on('printStatusLine', data => { if (this.playingTrack) { this.timeData = data + this.time = data.curSecTotal this.emit('received time data', data, this) } }) @@ -414,6 +419,7 @@ class QueuePlayer extends EventEmitter { } this.timeData = null + this.time = null this.playingTrack = item this.emit('playing', this.playingTrack, oldTrack, this) @@ -504,6 +510,7 @@ class QueuePlayer extends EventEmitter { const oldTrack = this.playingTrack this.playingTrack = null this.timeData = null + this.time = null this.emit('playing', null, oldTrack, this) } } @@ -513,51 +520,69 @@ 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) } 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) } get remainingTracks() { @@ -632,6 +657,24 @@ class Backend extends EventEmitter { this.queuePlayers.push(queuePlayer) this.emit('added queue player', queuePlayer) + for (const event of [ + 'playing', + 'seek-ahead', + 'seek-back', + 'toggle-pause', + 'set-pause', + 'toggle-loop', + 'set-loop', + 'vol-up', + 'vol-down', + 'set-volume', + 'set-pause-next-track' + ]) { + queuePlayer.on(event, (...data) => { + this.emit(event, queuePlayer, ...data) + }) + } + return queuePlayer } -- cgit 1.3.0-6-gf8a5