diff options
author | Florrie <towerofnix@gmail.com> | 2020-07-11 17:37:54 -0300 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2020-07-11 17:42:22 -0300 |
commit | 07fb4b2d4a59319ab5ba03d842274aba8182c412 (patch) | |
tree | 6dc82202e30a67b064c2ea2c05e9fb13c802c46b /backend.js | |
parent | 991b2f0a8280c31b93ad91d6a215b74183417352 (diff) |
synchronize playing new tracks across sockets
Diffstat (limited to 'backend.js')
-rw-r--r-- | backend.js | 16 |
1 files changed, 14 insertions, 2 deletions
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() |