From 5edcff29e1785c055d401d968eff0e011ffbb56c Mon Sep 17 00:00:00 2001 From: snxraven Date: Thu, 13 Jun 2024 20:06:49 +0000 Subject: [PATCH] revert 8c4a38ca8e18e27e51e4a2d39003e8daed8e3b32 revert peer count per room --- app.js | 107 ++++++++++++++------------------------------------------- 1 file changed, 26 insertions(+), 81 deletions(-) diff --git a/app.js b/app.js index f180a67..f771de0 100644 --- a/app.js +++ b/app.js @@ -14,6 +14,7 @@ const drive = new Hyperdrive(store); await drive.ready(); let swarm; +let peerCount = 0; let activeRooms = []; const eventEmitter = new EventEmitter(); @@ -31,12 +32,6 @@ let config = { // Store messages for each room let messagesStore = {}; -// Store peer counts for each room -let peerCounts = {}; - -// Map to store discovery instances and their associated topics -const discoveryTopicsMap = new Map(); - // Function to get a random port between 49152 and 65535 function getRandomPort() { return Math.floor(Math.random() * (65535 - 49152 + 1)) + 49152; @@ -160,47 +155,31 @@ async function initialize() { }); swarm.on('connection', async (connection, info) => { - try { - const discovery = [...discoveryTopicsMap.entries()].find(([key, value]) => key.id === info.id); - const topic = discovery ? discovery[1] : null; + peerCount++; + updatePeerCount(); + console.log('Peer connected, current peer count:', peerCount); - if (!topic) { - console.error('No topic found in connection info:', info); - return; - } - - if (!peerCounts[topic]) { - peerCounts[topic] = 0; - } - peerCounts[topic]++; - updatePeerCount(topic); - console.log('Peer connected, current peer count:', peerCounts[topic]); - - // Send the current user's icon to the new peer - const iconBuffer = await drive.get(`/icons/${config.userName}.png`); - if (iconBuffer) { - const iconMessage = JSON.stringify({ - type: 'icon', - username: config.userName, - avatar: b4a.toString(iconBuffer, 'base64'), - topic - }); - connection.write(iconMessage); - } - - connection.on('data', (data) => { - const messageObj = JSON.parse(data.toString()); - eventEmitter.emit('onMessage', messageObj); + // Send the current user's icon to the new peer + const iconBuffer = await drive.get(`/icons/${config.userName}.png`); + if (iconBuffer) { + const iconMessage = JSON.stringify({ + type: 'icon', + username: config.userName, + avatar: b4a.toString(iconBuffer, 'base64'), }); - - connection.on('close', () => { - peerCounts[topic]--; - updatePeerCount(topic); - console.log('Peer disconnected, current peer count:', peerCounts[topic]); - }); - } catch (error) { - console.error('Error handling connection:', error); + connection.write(iconMessage); } + + connection.on('data', (data) => { + const messageObj = JSON.parse(data.toString()); + eventEmitter.emit('onMessage', messageObj); + }); + + connection.on('close', () => { + peerCount--; + updatePeerCount(); + console.log('Peer disconnected, current peer count:', peerCount); + }); }); swarm.on('error', (err) => { @@ -351,10 +330,6 @@ async function joinSwarm(topicBuffer) { await discovery.flushed(); activeRooms.push({ topic, discovery }); - peerCounts[topic] = 0; // Initialize peer count for the new room - - // Store the topic in the map - discoveryTopicsMap.set(discovery, topic); console.log('Joined room:', topic); // Debugging log @@ -368,13 +343,9 @@ async function joinSwarm(topicBuffer) { function addRoomToList(topic) { const roomList = document.querySelector('#room-list'); const roomItem = document.createElement('li'); + roomItem.textContent = truncateHash(topic); roomItem.dataset.topic = topic; - const roomName = document.createElement('span'); - roomName.textContent = truncateHash(topic); - - roomItem.appendChild(roomName); - roomItem.addEventListener('dblclick', () => enterEditMode(roomItem)); roomItem.addEventListener('click', () => switchRoom(topic)); roomList.appendChild(roomItem); @@ -462,9 +433,6 @@ function switchRoom(topic) { // Show chat UI elements document.querySelector('#chat').classList.remove('hidden'); document.querySelector('#setup').classList.add('hidden'); - - // Update the peer count in the header - updateHeaderPeerCount(topic); } function leaveRoom(topic) { @@ -473,7 +441,6 @@ function leaveRoom(topic) { const room = activeRooms[roomIndex]; room.discovery.destroy(); activeRooms.splice(roomIndex, 1); - discoveryTopicsMap.delete(room.discovery); } const roomItem = document.querySelector(`li[data-topic="${topic}"]`); @@ -601,32 +568,10 @@ function addFileMessage(from, fileName, fileUrl, fileType, avatar, topic) { } } -function updatePeerCount(topic) { - let peerCountElement = document.querySelector(`#peers-count-${topic}`); - if (!peerCountElement) { - const roomItem = document.querySelector(`#room-list li[data-topic="${topic}"]`); - if (roomItem) { - peerCountElement = document.createElement('span'); - peerCountElement.id = `peers-count-${topic}`; - // roomItem.appendChild(peerCountElement); - } - } - if (peerCountElement) { - peerCountElement.textContent = ` (${peerCounts[topic]})`; // Display the peer count for the specific topic - } - - // Update the header peer count if the current room matches the topic - const currentTopic = document.querySelector('#chat-room-topic').innerText; - if (currentTopic === topic) { - updateHeaderPeerCount(topic); - } -} - -function updateHeaderPeerCount(topic) { +function updatePeerCount() { const peerCountElement = document.querySelector('#peers-count'); if (peerCountElement) { - const peerCount = peerCounts[topic] || 0; - peerCountElement.textContent = peerCount; + peerCountElement.textContent = peerCount; // Display the actual peer count } }