From 521db2c548f8f1bfd0b690b6173d4cfeecd323a9 Mon Sep 17 00:00:00 2001 From: nuzulul Date: Tue, 25 Jun 2024 05:12:11 +0700 Subject: [PATCH] fix : fix bug room members is mixed --- package.json | 2 +- src/webpeerjs.js | 21 +++++--- test/project/.gitignore | 24 --------- test/project/counter.js | 9 ---- test/project/index.html | 44 +++++++++++++++-- test/project/javascript.svg | 1 - test/project/main.js | 25 ---------- test/project/public/vite.svg | 1 - test/project/style.css | 96 ------------------------------------ 9 files changed, 53 insertions(+), 170 deletions(-) delete mode 100644 test/project/.gitignore delete mode 100644 test/project/counter.js delete mode 100644 test/project/javascript.svg delete mode 100644 test/project/main.js delete mode 100644 test/project/public/vite.svg delete mode 100644 test/project/style.css diff --git a/package.json b/package.json index 80e18f9..76b401b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webpeerjs", - "version": "0.1.0", + "version": "0.1.1", "description": "Simple peer-to-peer with IPFS", "main": "./dist/umd/webpeerjs.js", "module": "./src/webpeerjs.js", diff --git a/src/webpeerjs.js b/src/webpeerjs.js index 06a148c..315df61 100644 --- a/src/webpeerjs.js +++ b/src/webpeerjs.js @@ -327,13 +327,18 @@ class webpeerjs{ } if(rooms){ - for(const room of Object.keys(this.#rooms)){ - //update room members - if(!this.#rooms[room].members.includes(id)){ - if(this.#connectedPeers.has(id)){ - this.#rooms[room].members.push(id) - this.#rooms[room].onMembers(this.#rooms[room].members) + for(const room of rooms){ + + if(this.#rooms[room]){ + + //update room members + if(!this.#rooms[room].members.includes(id)){ + if(this.#connectedPeers.has(id)){ + this.#rooms[room].members.push(id) + this.#rooms[room].onMembers(this.#rooms[room].members) + } } + } } } @@ -1072,7 +1077,7 @@ class webpeerjs{ //announce and ping via pupsub peer discovery async #announce(){ const topics = config.CONFIG_PUPSUB_PEER_DATA - const data = JSON.stringify({prefix:config.CONFIG_PREFIX,signal:'announce',id:this.#libp2p.peerId.toString(),address:this.address,rooms:this.#rooms}) + const data = JSON.stringify({prefix:config.CONFIG_PREFIX,signal:'announce',id:this.#libp2p.peerId.toString(),address:this.address,rooms:Object.keys(this.#rooms)}) const peer = { publicKey: this.#libp2p.peerId.publicKey, addrs: [uint8ArrayFromString(data)], @@ -1084,7 +1089,7 @@ class webpeerjs{ } async #ping(){ const topics = config.CONFIG_PUPSUB_PEER_DATA - const data = JSON.stringify({prefix:config.CONFIG_PREFIX,signal:'ping',id:this.#libp2p.peerId.toString(),address:this.address,rooms:this.#rooms}) + const data = JSON.stringify({prefix:config.CONFIG_PREFIX,signal:'ping',id:this.#libp2p.peerId.toString(),address:this.address,rooms:Object.keys(this.#rooms)}) const peer = { publicKey: this.#libp2p.peerId.publicKey, addrs: [uint8ArrayFromString(data)], diff --git a/test/project/.gitignore b/test/project/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/test/project/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/test/project/counter.js b/test/project/counter.js deleted file mode 100644 index 881e2d7..0000000 --- a/test/project/counter.js +++ /dev/null @@ -1,9 +0,0 @@ -export function setupCounter(element) { - let counter = 0 - const setCounter = (count) => { - counter = count - element.innerHTML = `count is ${counter}` - } - element.addEventListener('click', () => setCounter(counter + 1)) - setCounter(0) -} diff --git a/test/project/index.html b/test/project/index.html index 3d08438..1e6415c 100644 --- a/test/project/index.html +++ b/test/project/index.html @@ -2,12 +2,46 @@ - - Vite App + WebpeerJS -
- +

Basic Connection Demo of WebpeerJS

+
+ + - + \ No newline at end of file diff --git a/test/project/javascript.svg b/test/project/javascript.svg deleted file mode 100644 index f9abb2b..0000000 --- a/test/project/javascript.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/test/project/main.js b/test/project/main.js deleted file mode 100644 index 6873df9..0000000 --- a/test/project/main.js +++ /dev/null @@ -1,25 +0,0 @@ -import { webpeerjs } from 'webpeerjs' - -void async function main() { - - const node = await webpeerjs.createWebpeer() - - console.log(`My node id : ${node.id}`) - - const [send,listen,members] = node.joinRoom('myroom') - - listen((message,id) => { - console.log(`Message from ${id} : ${message}`) - }) - - members((data) => { - console.log(`Members : ${data}`) - send("Hello") - }) - - setInterval(()=>{ - //console.log("peers",node.peers) - //send(node.id) - },500) - -}() \ No newline at end of file diff --git a/test/project/public/vite.svg b/test/project/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/test/project/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/test/project/style.css b/test/project/style.css deleted file mode 100644 index 30aa814..0000000 --- a/test/project/style.css +++ /dev/null @@ -1,96 +0,0 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -#app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.vanilla:hover { - filter: drop-shadow(0 0 2em #f7df1eaa); -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -}