From 458954c1e1d9e374795278a69ba826de52ae288e Mon Sep 17 00:00:00 2001 From: Raven Scott Date: Fri, 14 Jun 2024 01:10:23 -0400 Subject: [PATCH] adding in new commands --- app.js | 16 +++++++++++++--- commands.js | 25 +++++++++++++++++++++---- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/app.js b/app.js index fc3dde0..4787082 100644 --- a/app.js +++ b/app.js @@ -61,6 +61,12 @@ function updatePeerCount() { } } +async function joinRoom(topicStr) { + const topicBuffer = b4a.from(topicStr, 'hex'); + addRoomToList(topicStr); + await joinSwarm(topicBuffer); +} + async function initialize() { try { servePort = getRandomPort(); @@ -493,7 +499,9 @@ function leaveRoom(topic) { document.querySelector('#setup').classList.remove('hidden'); } } -function sendMessage(e) { + + +async function sendMessage(e) { e.preventDefault(); const message = document.querySelector('#message').value; document.querySelector('#message').value = ''; @@ -503,11 +511,13 @@ function sendMessage(e) { if (message.startsWith('~')) { // Handle command - handleCommand(message, { + await handleCommand(message, { eventEmitter, currentTopic, clearMessages, - addMessage: (from, message, avatar, topic) => onMessageAdded(from, message, avatar, topic, timestamp) + addMessage: (from, message, avatar, topic) => onMessageAdded(from, message, avatar, topic, timestamp), + joinRoom, + leaveRoom }); return; } diff --git a/commands.js b/commands.js index c9610cd..9d4cf57 100644 --- a/commands.js +++ b/commands.js @@ -11,17 +11,34 @@ if (fs.existsSync(agentAvatarPath)) { agentAvatar = `data:image/png;base64,${b4a.toString(avatarBuffer, 'base64')}`; } -export default function handleCommand(command, context) { - const { eventEmitter, currentTopic, clearMessages, addMessage } = context; +export default async function handleCommand(command, context) { + const { eventEmitter, currentTopic, clearMessages, addMessage, joinRoom, leaveRoom } = context; + + const args = command.trim().split(' '); + const cmd = args[0].toLowerCase(); + const restArgs = args.slice(1).join(' '); - switch (command.trim().toLowerCase()) { + switch (cmd) { case '~clear': clearMessages(); break; case '~ping': addMessage('LinkUp', 'pong', agentAvatar, currentTopic()); break; + case '~help': + addMessage('LinkUp', 'Available commands: ~clear, ~ping, ~help, ~join [topic], ~leave', agentAvatar, currentTopic()); + break; + case '~join': + if (restArgs) { + await joinRoom(restArgs); + } else { + addMessage('LinkUp', 'Usage: ~join [topic]', agentAvatar, currentTopic()); + } + break; + case '~leave': + leaveRoom(currentTopic()); + break; default: console.log('Unknown command:', command); } -} \ No newline at end of file +}