From fdc5961a4b8423ffe5e6e4939f9f709f8e7e34c9 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Mon, 15 May 2023 16:06:04 -0300 Subject: WIP socket shenanigans this commit is mostly trash lol --- index.js | 88 ++++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 33 deletions(-) (limited to 'index.js') diff --git a/index.js b/index.js index fea9222..6aad592 100755 --- a/index.js +++ b/index.js @@ -100,33 +100,68 @@ async function main() { process.exit(1) } - const backend = new Backend({ - playerName: options['player'], - playerOptions: options['player-options'] - }) + const backendConfig = + (options['socket-server'] + ? { + playerName: 'ghost', + } + : { + playerName: options['player'], + playerOptions: options['player-options'], + }) + + const appConfig = + (options['socket-server'] + ? { + showPartyControls: true, + canControlPlayback: false, + canControlQueue: false, + canControlQueuePlayers: false, + canProcessMetadata: false, + } + : options['socket-client'] + ? { + showPartyControls: true, + } + : {}) - const result = await backend.setup() - if (result.error) { - console.error(result.error) + const backend = new Backend(backendConfig) + + const setupResult = await backend.setup() + if (setupResult.error) { + console.error(setupResult.error) process.exit(1) } - backend.on('playing', track => { - if (track) { - writeFile(backend.rootDirectory + '/current-track.txt', - getItemPathString(track)) - writeFile(backend.rootDirectory + '/current-track.json', - JSON.stringify(track, null, 2)) - } - }) + if (options['socket-server']) { + const socketServer = makeSocketServer() + attachSocketServerToBackend(socketServer, backend) + socketServer.listen(options['socket-server']) + + const socketClient = makeSocketClient() + attachBackendToSocketClient(backend, socketClient) + socketClient.socket.connect(options['socket-server']) + + backend.setPartyNickname('Internal Client') + backend.announceJoinParty() + } + + if (!options['socket-server']) { + backend.on('playing', track => { + if (track) { + writeFile(backend.rootDirectory + '/current-track.txt', + getItemPathString(track)) + writeFile(backend.rootDirectory + '/current-track.json', + JSON.stringify(track, null, 2)) + } + }) + } const { appElement, dirtyTerminal, flushable, root } = await setupClient({ backend, screenInterface: new CommandLineInterface(), writable: process.stdout, - appConfig: { - showPartyControls: !!(options['socket-server'] || options['socket-client']) - }, + appConfig, }) appElement.on('quitRequested', () => { @@ -148,7 +183,7 @@ async function main() { root.renderNow() }) - if (playlistSources.length === 0) { + if (!options['socket-server'] && playlistSources.length === 0) { if (jsonConfig.defaultPlaylists) { playlistSources.push(...jsonConfig.defaultPlaylists) } else { @@ -177,26 +212,13 @@ async function main() { appElement.attachAsServerHost(telnetServer) } - let socketClient - let socketServer - if (options['socket-server']) { - socketServer = makeSocketServer() - attachSocketServerToBackend(socketServer, backend) - socketServer.listen(options['socket-server']) - - socketClient = makeSocketClient() - socketClient.socket.connect(options['socket-server']) - } - if (options['socket-client']) { - socketClient = makeSocketClient() + const socketClient = makeSocketClient() const [ p1, p2 ] = options['socket-client'].split(':') const host = p2 && p1 const port = p2 ? p2 : p1 socketClient.socket.connect(port, host) - } - if (socketClient) { attachBackendToSocketClient(backend, socketClient) let nickname = process.env.USER -- cgit 1.3.0-6-gf8a5