From 7d3ab3e2ee7998586e85a5575a1d624eed656775 Mon Sep 17 00:00:00 2001 From: raven Date: Sun, 15 Jan 2023 22:01:49 -0500 Subject: [PATCH] Adding the ability to use ESC to enter scroll mode, ESC twice to exit and T or ENTER to return to chat --- sshChat.js | 67 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/sshChat.js b/sshChat.js index 3003983..a008f32 100644 --- a/sshChat.js +++ b/sshChat.js @@ -52,6 +52,12 @@ const screen = blessed.screen({ fastCSR: true }); + +// Debug ONLY +// screen.on('keypress', function(ch, key){ +// console.log(JSON.stringify(key)); +// }); + let mainBox = blessed.box({ parent: screen, top: 0, @@ -125,10 +131,10 @@ sidebarBox.setLabel("Peers since connection: 0") const originalLog = console.log; console.log = (...args) => { - mainBox.setContent(mainBox.getContent() + `\n${args.join(' ')}`); - updateScroll() - stdinBox.clearValue(); - screen.render() + mainBox.setContent(mainBox.getContent() + `\n${args.join(' ')}`); + updateScroll() + stdinBox.clearValue(); + screen.render() } @@ -139,7 +145,7 @@ const publicKey = crypto.randomBytes(32) // Create the swarm and pass in the public key const swarm = new Hyperswarm() -const commandDir = __dirname +'/commands/'; +const commandDir = __dirname + '/commands/'; const commandFiles = fs.readdirSync(commandDir); const commands = {} @@ -195,24 +201,24 @@ async function handleCommand(input) { console.log("Command not found.") } } else { - if (DISCORD_USERID.length !== 0){ + if (DISCORD_USERID.length !== 0) { + for (const conn of conns) + conn.write(`${DISCORD_USERID[0]}: ${input}`) + } else { for (const conn of conns) - conn.write(`${DISCORD_USERID[0]}: ${input}`) - } else { - for (const conn of conns) conn.write(`${USERNAME}: ${input}`) - } - if (DISCORD_USERID.length !== 0){ - console.log(`${DISCORD_USERID[0]}: ${input}`) - } else { - console.log(`${USERNAME}: ${input}`) - } - - - } + } + if (DISCORD_USERID.length !== 0) { + console.log(`${DISCORD_USERID[0]}: ${input}`) + } else { + console.log(`${USERNAME}: ${input}`) + } + + + } + + - - } swarm.on('connection', conn => { @@ -309,6 +315,23 @@ stdinBox.focus(); screen.render() // Quit on Escape, q, or Control-C. -screen.key(['escape', 'q', 'C-c'], function(ch, key) { - return process.exit(0); +screen.key(['escape', 'q', 'C-c'], function (ch, key) { + console.log("Sending close message...") + for (let conn of conns) { + conn.write(`CLOSED: ${publicKey.toString('hex')}`) + } + (async () => { + + await sleep(2000) + process.exit() + + })(); + +}); + +let scrollCount = 0 + +// Return to chat +screen.key(['t', 'enter'], function (ch, key) { + stdinBox.focus(); }); \ No newline at end of file