diff options
author | (quasar) nebula <towerofnix@gmail.com> | 2020-09-15 15:48:37 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-05-16 19:13:40 -0300 |
commit | 8c1ca578d12c905ff5a7bf1fe1ac752e645e5dd7 (patch) | |
tree | 99344b9e58a36f06a06c80efe840d31c30be4cc5 /socket.js | |
parent | 467c896ed21a8e0eaf05ffff2fd764d9a6fbb247 (diff) |
old "wait when done playing" code
I haven't tested this since writing it in July so I have no idea what it does! :D
Diffstat (limited to 'socket.js')
-rw-r--r-- | socket.js | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/socket.js b/socket.js index aea2ee8..52a2d51 100644 --- a/socket.js +++ b/socket.js @@ -170,6 +170,7 @@ function validateCommand(command) { ) case 'status': return ( + command.status === 'done-playing' || ( command.status === 'ready-to-resume' && typeof command.queuePlayer === 'string' @@ -227,8 +228,9 @@ export function makeSocketServer() { server.canonicalBackend = null - // readyToResume -> queue player id -> array: socket + // <variable> -> queue player id -> array: socket const readyToResume = {} + const donePlaying = {} server.on('connection', socket => { sockets.push(socket) @@ -263,6 +265,19 @@ export function makeSocketServer() { if (command.code === 'status') { switch (command.status) { + case 'done-playing': { + const doneSockets = donePlaying[command.queuePlayer] + if (doneSockets && !doneSockets.includes(socket)) { + doneSockets.push(socket) + if (doneSockets.length === sockets.length) { + // determine next track + for (const socket of sockets) { + // play next track + } + delete donePlaying[command.queuePlayer] + } + } + } case 'ready-to-resume': { const readySockets = readyToResume[command.queuePlayer] if (readySockets && !readySockets.includes(socket)) { @@ -276,6 +291,7 @@ export function makeSocketServer() { startingTrack: true, paused: false }) + '\n') + donePlaying[command.queuePlayer] = [] } delete readyToResume[command.queuePlayer] } @@ -396,6 +412,7 @@ export function attachBackendToSocketClient(backend, client, { // other through commands lives here. backend.setAlwaysStartPaused(true) + backend.setWaitWhenDonePlaying(true) function logCommand(command) { const nickToMessage = nickname => `\x1b[32;1m${nickname}\x1b[0m` @@ -609,6 +626,14 @@ export function attachBackendToSocketClient(backend, client, { }) }) + backend.on('done playing', queuePlayer => { + client.sendCommand({ + code: 'status', + status: 'done-playing', + queuePlayer: queuePlayer.id + }) + }) + backend.on('playing', (queuePlayer, track) => { if (track) { client.sendCommand({ |