From 3d6c5b9bb1f9a42cebc61cbe3b0b5fb69bc146e8 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 15 Sep 2020 15:48:37 -0300 Subject: 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 --- socket.js | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'socket.js') diff --git a/socket.js b/socket.js index a092e4a..fec66d7 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 @@ function makeSocketServer() { server.canonicalBackend = null - // readyToResume -> queue player id -> array: socket + // -> queue player id -> array: socket const readyToResume = {} + const donePlaying = {} server.on('connection', socket => { sockets.push(socket) @@ -263,6 +265,19 @@ 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 @@ function makeSocketServer() { startingTrack: true, paused: false }) + '\n') + donePlaying[command.queuePlayer] = [] } delete readyToResume[command.queuePlayer] } @@ -396,6 +412,7 @@ 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 @@ 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({ -- cgit 1.3.0-6-gf8a5