diff --git a/main.js b/main.js index e4d4150..8537608 100644 --- a/main.js +++ b/main.js @@ -3,6 +3,8 @@ const Path = require('node:path') const URL = require('node:url') const p = require('node:util').promisify const awaitable = require('pull-awaitable') +const iterable = require( 'pull-iterable' ) +const pull = require('pull-stream') const { createPeer } = require('pzp-sdk') // WARNING monkey patch! ------------------------------------------------------- @@ -116,6 +118,8 @@ createPeer({ path }).then(({ peer, account: globalAccountID }) => { msgIDToElemID.set(msgID, elemID) elementsByID.set(elemID, msg.data) } + } else { + console.log('other msg on init', msg) } } const initialElements = [...elementsByID.values()] @@ -132,6 +136,9 @@ createPeer({ path }).then(({ peer, account: globalAccountID }) => { elementsByID.set(elemID, msg.data) } mainWindow.webContents.send('readElements', [msg.data]) + } else if(msg?.domain === 'dict_v1__profile') { + // TODO: load on init as well + console.log('other msg on stream', msg) } }) @@ -174,8 +181,38 @@ createPeer({ path }).then(({ peer, account: globalAccountID }) => { if (hasSubscribedToConnections) return hasSubscribedToConnections = true + //async function* recordAdded( start, end ){ + // peer.db.onRecordAdded((record) => { + // yield record + // }) + //} + + + const recordsAdded = pull( + pull.count(), + pull.asyncMap((i, cb) => { + + }) + ) + // TODO: combine peers() and onRecordAdded() into one async iterator, so we update the connections list if either there's a new connection *or* if one connected peer has a new name for await (const connections of awaitable(peer.net.peers())) { - mainWindow.webContents.send('connections', connections) + const connInfo = await Promise.all(connections.map(async (conn) => { + const [multiaddr] = conn + const parts = multiaddr.split('/') + // TODO: woops this seems to get your own name + const key = parts[parts.length - 1] + const accountId = await p(peer.db.account.find)({public: key, subdomain: 'person'}) + const profile = await p(peer.dict.read)(accountId, 'profile') + const name = profile?.name + return [ + conn[0], + { + ...conn[1], + name, + }, + ] + })) + mainWindow.webContents.send('connections', connInfo) } } diff --git a/package.json b/package.json index d2e478e..cf8b232 100644 --- a/package.json +++ b/package.json @@ -21,21 +21,23 @@ "@testing-library/user-event": "^13.5.0", "concurrently": "^8.2.2", "debounce": "2.0", + "pull-awaitable": "1.0.0", + "pull-iterable": "^0.1.0", + "pull-stream": "^3.7.0", "pzp-caps": "^1.0.0", + "pzp-conductor": "^1.0.2", "pzp-db": "^1.0.2", "pzp-dict": "^1.0.0", "pzp-gc": "^1.0.0", "pzp-goals": "^1.0.0", + "pzp-hub-client": "^1.0.0", + "pzp-invite": "^1.0.0", "pzp-keypair": "^1.0.0", + "pzp-net": "^1.0.1", + "pzp-promise": "^1.0.0", "pzp-sdk": "^1.0.0", "pzp-set": "^1.0.0", "pzp-sync": "^1.0.0", - "pzp-conductor": "^1.0.2", - "pzp-hub-client": "^1.0.0", - "pzp-invite": "^1.0.0", - "pzp-net": "^1.0.1", - "pzp-promise": "^1.0.0", - "pull-awaitable": "1.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-outside-click-handler": "1.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8217a4..fc3ab78 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,12 @@ dependencies: pull-awaitable: specifier: 1.0.0 version: 1.0.0 + pull-iterable: + specifier: ^0.1.0 + version: 0.1.0 + pull-stream: + specifier: ^3.7.0 + version: 3.7.0 pzp-caps: specifier: ^1.0.0 version: 1.0.0 @@ -9496,6 +9502,10 @@ packages: pull-stream: 3.7.0 dev: false + /pull-iterable@0.1.0: + resolution: {integrity: sha512-FjhQ/STYNGwQaBhmuiZspL/+PIj+OHB1lE9OteegEWzciQhkJPx6Fwt+jqcpRDJ3kTzpt/ETSo3M5TFRpZ0pgQ==} + dev: false + /pull-looper@1.0.0: resolution: {integrity: sha512-djlD60A6NGe5goLdP5pgbqzMEiWmk1bInuAzBp0QOH4vDrVwh05YDz6UP8+pOXveKEk8wHVP+rB2jBrK31QMPA==} dependencies: diff --git a/src/Connections.js b/src/Connections.js index 904eafd..102470f 100644 --- a/src/Connections.js +++ b/src/Connections.js @@ -13,6 +13,8 @@ function Connections() { setConnections(arr) }) }) + console.log('connections', connections) + // TODO: put the names into the sidebar instead of the multiaddr (if the name exists) return ( <> @@ -30,7 +32,7 @@ function Connections() {
)}