« 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
committer(quasar) nebula <qznebula@protonmail.com>2024-05-16 19:03:04 -0300
commitf88d7c4959e7603714a5bb8f25807889a25304ee (patch)
tree5ea79ed92134e25d59e49bbfc82dd19161a565b6 /backend.js
parent2c7e3c8fb279f20da3d1b4f5610e65dc43a22ac2 (diff)
synchronize playing new tracks across sockets
Diffstat (limited to 'backend.js')
-rw-r--r--backend.js15
1 files changed, 13 insertions, 2 deletions
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()