From 07fb4b2d4a59319ab5ba03d842274aba8182c412 Mon Sep 17 00:00:00 2001 From: Florrie Date: Sat, 11 Jul 2020 17:37:54 -0300 Subject: synchronize playing new tracks across sockets --- backend.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'backend.js') diff --git a/backend.js b/backend.js index dc819ab..573a4fc 100644 --- a/backend.js +++ b/backend.js @@ -69,6 +69,7 @@ class QueuePlayer extends EventEmitter { this.playingTrack = null this.queueGrouplike = {name: 'Queue', isTheQueue: true, items: []} this.pauseNextTrack = false + this.alwaysStartPaused = false this.playedTrackToEnd = false this.timeData = null @@ -383,7 +384,7 @@ class QueuePlayer extends EventEmitter { } - async play(item, forceStartPaused = false) { + async play(item, forceStartPaused) { if (this.player === null) { throw new Error('Attempted to play before a player was loaded') } @@ -431,10 +432,11 @@ class QueuePlayer extends EventEmitter { this.timeData = null this.time = null this.playingTrack = item + this.emit('playing details', this.playingTrack, oldTrack, this) this.emit('playing', this.playingTrack, oldTrack, this) await this.player.kill() - if (forceStartPaused) { + if (this.alwaysStartPaused || forceStartPaused) { this.player.setPause(true) } else if (this.playedTrackToEnd) { this.player.setPause(this.pauseNextTrack) @@ -637,6 +639,7 @@ class Backend extends EventEmitter { } this.queuePlayers = [] + this.alwaysStartPaused = false this.recordStore = new RecordStore() this.throttleMetadata = throttlePromise(10) @@ -668,6 +671,8 @@ class Backend extends EventEmitter { return error } + queuePlayer.alwaysStartPaused = this.alwaysStartPaused + this.queuePlayers.push(queuePlayer) this.emit('added queue player', queuePlayer) @@ -793,6 +798,13 @@ class Backend extends EventEmitter { return {seconds, string, noticedMissingMetadata, approxSymbol} } + setAlwaysStartPaused(value) { + this.alwaysStartPaused = !!value + for (const queuePlayer of this.queuePlayers) { + queuePlayer.alwaysStartPaused = !!value + } + } + async stopPlayingAll() { for (const queuePlayer of this.queuePlayers) { await queuePlayer.stopPlaying() -- cgit 1.3.0-6-gf8a5