« get me outta code hell

synchronize playing new tracks across sockets - mtui - Music Text User Interface - user-friendly command line music player
about summary refs log tree commit diff
path: root/backend.js
diff options
context:
space:
mode:
authorFlorrie <towerofnix@gmail.com>2020-07-11 17:37:54 -0300
committerFlorrie <towerofnix@gmail.com>2020-07-11 17:42:22 -0300
commit07fb4b2d4a59319ab5ba03d842274aba8182c412 (patch)
tree6dc82202e30a67b064c2ea2c05e9fb13c802c46b /backend.js
parent991b2f0a8280c31b93ad91d6a215b74183417352 (diff)
synchronize playing new tracks across sockets
Diffstat (limited to 'backend.js')
-rw-r--r--backend.js16
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()