From f88d7c4959e7603714a5bb8f25807889a25304ee 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 | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'backend.js') diff --git a/backend.js b/backend.js index c59dfdf..6e669d9 100644 --- a/backend.js +++ b/backend.js @@ -67,6 +67,7 @@ class QueuePlayer extends EventEmitter { this.queueGrouplike = {name: 'Queue', isTheQueue: true, items: []} this.pauseNextTrack = false this.queueEndMode = 'end' // end, loop, shuffle + this.alwaysStartPaused = false this.playedTrackToEnd = false this.timeData = null @@ -369,7 +370,6 @@ class QueuePlayer extends EventEmitter { this.clearPlayingTrack() } - async play(item, startTime = 0, forceStartPaused = false) { if (this.player === null) { throw new Error('Attempted to play before a player was loaded') @@ -418,10 +418,11 @@ class QueuePlayer extends EventEmitter { this.timeData = null this.time = null this.playingTrack = item + this.emit('playing details', this.playingTrack, oldTrack, startTime, this) this.emit('playing', this.playingTrack, oldTrack, startTime, this) await this.player.kill() - if (forceStartPaused) { + if (this.alwaysStartPaused || forceStartPaused) { this.player.setPause(true) } else if (this.playedTrackToEnd) { this.player.setPause(this.pauseNextTrack) @@ -687,6 +688,7 @@ export default class Backend extends EventEmitter { } this.queuePlayers = [] + this.alwaysStartPaused = false this.recordStore = new RecordStore() this.throttleMetadata = throttlePromise(10) @@ -718,6 +720,8 @@ export default class Backend extends EventEmitter { return error } + queuePlayer.alwaysStartPaused = this.alwaysStartPaused + this.queuePlayers.push(queuePlayer) this.emit('added queue player', queuePlayer) @@ -845,6 +849,13 @@ export default 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