diff --git a/main.js b/main.js index 0fed6b4..496b416 100644 --- a/main.js +++ b/main.js @@ -149,14 +149,14 @@ function copyToClipboard(ev, text) { } let hasSubscribedToReadElements = false -function subscribeToReadElements() { +async function subscribeToReadElements() { if (hasSubscribedToReadElements) return hasSubscribedToReadElements = true // Load initial elements and inform renderer const elementsByID = new Map() const msgIDToElemID = new Map() - for (const { id: msgID, msg } of peer.db.records()) { + for await (const { id: msgID, msg } of peer.db.records()) { if (msg.data && msg.metadata.domain === 'zooboardElements') { const { id: elemID, isDeleted } = msg.data if (isDeleted) { diff --git a/package-lock.json b/package-lock.json index 2152f13..26e731b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,20 +14,20 @@ "@testing-library/user-event": "^13.5.0", "concurrently": "^8.2.2", "debounce": "2.0", - "ppppp-caps": "github:staltz/ppppp-caps#93fa810b9a40b78aef4872d4c2a8412cccb52929", "ppppp-conductor": "github:staltz/ppppp-conductor#8ebeb0fb12de766fac21f8292121307cf7d1bd1e", - "ppppp-db": "github:staltz/ppppp-db#cf1532965ea1d16929ed2291a9b737a4ce74caac", "ppppp-dict": "github:staltz/ppppp-dict#c40d51be6cb96982b4fe691a292b3c12b6f49a36", "ppppp-gc": "github:staltz/ppppp-gc#9075f983d8fa9a13c18a63451a78bed5912e78d0", "ppppp-goals": "github:staltz/ppppp-goals#46a8d8889c668cf291607963fd7301f21aa634b5", "ppppp-hub-client": "github:staltz/ppppp-hub-client#6dec9c25291155151051e28b048560038c47ea3f", "ppppp-invite": "github:staltz/ppppp-invite#745eea3de0b98a4896face25cb31288c9b0c9ed2", - "ppppp-keypair": "github:staltz/ppppp-keypair#c33980c580e33f9a35cb0c672b916ec9fe8b4c6d", "ppppp-net": "github:staltz/ppppp-net#5b79b9566bb425e27169f90544bc54b8b418b87c", "ppppp-promise": "github:staltz/ppppp-promise#e4f559178c35b71fb96ed0029d3d9b839c7d64ff", - "ppppp-set": "github:staltz/ppppp-set#07c3e295b2d09d2d6c3ac6b5b93ad2ea80698452", "ppppp-sync": "github:staltz/ppppp-sync#93f00dbd04267f472fbf2f3ae63495092d3a921e", "pull-awaitable": "1.0.0", + "pzp-caps": "^1.0.0", + "pzp-db": "^1.0.1", + "pzp-keypair": "^1.0.0", + "pzp-set": "^1.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-outside-click-handler": "1.3.0", @@ -15829,12 +15829,6 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, - "node_modules/ppppp-caps": { - "version": "0.0.1", - "resolved": "git+ssh://git@github.com/staltz/ppppp-caps.git#93fa810b9a40b78aef4872d4c2a8412cccb52929", - "integrity": "sha512-s9HFoN3opX65jRYotfm0rGaaiHSIGx3qkR0oIxFM9DjeDyaSog/KtyGYHN19iXrnIpXfXlUOOofQEXDGeaUzWg==", - "license": "CC0-1.0" - }, "node_modules/ppppp-conductor": { "version": "1.0.0", "resolved": "git+ssh://git@github.com/staltz/ppppp-conductor.git#8ebeb0fb12de766fac21f8292121307cf7d1bd1e", @@ -15847,64 +15841,6 @@ "node": ">=16" } }, - "node_modules/ppppp-db": { - "version": "0.0.1", - "resolved": "git+ssh://git@github.com/staltz/ppppp-db.git#cf1532965ea1d16929ed2291a9b737a4ce74caac", - "integrity": "sha512-AnwvlVLwRkivvdDJOBBPapXpAakxY6Wn4pg+g8K3JfTuIPIqx/o52fJ6G9M6PDSOlA69Y/dRgskZgex60wuWyg==", - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "atomic-file-rw": "~0.3.0", - "b4a": "~1.6.4", - "blake3": "~2.1.7", - "bs58": "~5.0.0", - "debug": "^4.3.0", - "is-buffer-zero": "^1.0.0", - "json-canon": "~1.0.0", - "lodash.debounce": "~4.0.8", - "multicb": "~1.2.2", - "mutexify": "~1.4.0", - "obz": "~1.1.0", - "polyraf": "^1.1.0", - "ppppp-keypair": "github:staltz/ppppp-keypair#61ef4420578f450dc2cc7b1efc1c5a691a871c74", - "promisify-4loc": "~1.0.0", - "promisify-tuple": "~1.2.0", - "push-stream": "~11.2.0", - "set.prototype.union": "~1.0.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/ppppp-db/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ppppp-db/node_modules/ppppp-keypair": { - "version": "0.0.1", - "resolved": "git+ssh://git@github.com/staltz/ppppp-keypair.git#61ef4420578f450dc2cc7b1efc1c5a691a871c74", - "integrity": "sha512-gwatobn1Psd92p1lH7oXtV39qJK4A01t7LhOmfmlooc9qwyaZEfvB3Gtf9YRLebgMO8Mk8dzslGSbcx12OZ46w==", - "license": "MIT", - "dependencies": { - "b4a": "~1.6.4", - "bs58": "~5.0.0", - "mkdirp": "~3.0.1", - "sodium-universal": "~4.0.0" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/ppppp-dict": { "version": "1.0.0", "resolved": "git+ssh://git@github.com/staltz/ppppp-dict.git#c40d51be6cb96982b4fe691a292b3c12b6f49a36", @@ -15973,35 +15909,6 @@ "node": ">=16" } }, - "node_modules/ppppp-keypair": { - "version": "0.0.1", - "resolved": "git+ssh://git@github.com/staltz/ppppp-keypair.git#c33980c580e33f9a35cb0c672b916ec9fe8b4c6d", - "integrity": "sha512-2r1AFwnCLJyAZMxxcYPslRbn1HXCrXYKaAKGBOtI5OprAgt5Rx2onf3vtpVdSxS2Kl/s526LkPU5LWeC0vJ2kQ==", - "license": "MIT", - "dependencies": { - "b4a": "~1.6.4", - "bs58": "~5.0.0", - "mkdirp": "~3.0.1", - "sodium-universal": "~4.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/ppppp-keypair/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/ppppp-net": { "version": "1.0.0", "resolved": "git+ssh://git@github.com/staltz/ppppp-net.git#5b79b9566bb425e27169f90544bc54b8b418b87c", @@ -16044,15 +15951,6 @@ "node": ">=16" } }, - "node_modules/ppppp-set": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/staltz/ppppp-set.git#07c3e295b2d09d2d6c3ac6b5b93ad2ea80698452", - "integrity": "sha512-OPlcaUyqmkUd/Hnnr2e+Ex3gOmI8JOcXox3HG0fnAzUMHbD5cPfcrcV6uBy8UuQJXYdIYZZ5AojkPAQFbxEx8A==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, "node_modules/ppppp-sync": { "version": "1.0.0", "resolved": "git+ssh://git@github.com/staltz/ppppp-sync.git#93f00dbd04267f472fbf2f3ae63495092d3a921e", @@ -16463,6 +16361,80 @@ "push-stream": "^11.0.1" } }, + "node_modules/pzp-caps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pzp-caps/-/pzp-caps-1.0.0.tgz", + "integrity": "sha512-X/0lJFky3ztsypwwegrhjLODxe+ZFcQPWibBWD7SOuiG6+k01EhBFf7Tb9XvrYTncz9mbNXlaF4Iw0ihI55t0g==" + }, + "node_modules/pzp-db": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pzp-db/-/pzp-db-1.0.1.tgz", + "integrity": "sha512-Bi3i4j9A49ElQ3yTGOl4a5eQ0p3vciaKUMZK+p2Rq42FrFI95BTZGYPFjgUDGgAstcnPsROEF3kCseaM46eoQg==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "atomic-file-rw": "~0.3.0", + "b4a": "~1.6.4", + "blake3": "~2.1.7", + "bs58": "~5.0.0", + "debug": "^4.3.0", + "is-buffer-zero": "^1.0.0", + "json-canon": "~1.0.0", + "lodash.debounce": "~4.0.8", + "multicb": "~1.2.2", + "mutexify": "~1.4.0", + "obz": "~1.1.0", + "polyraf": "^1.1.0", + "promisify-4loc": "~1.0.0", + "promisify-tuple": "~1.2.0", + "pull-stream": "^3.7.0", + "push-stream": "~11.2.0", + "pzp-keypair": "^1.0.0", + "set.prototype.union": "~1.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/pzp-keypair": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pzp-keypair/-/pzp-keypair-1.0.0.tgz", + "integrity": "sha512-7bg08M/pE/kdVveZYyiofXawBujQ5GPI2KbWN6CFH/6DMY9c5TCJx6HCC8KXo0QjaRzuwNhu0vNFVvJDQVZMog==", + "dependencies": { + "b4a": "~1.6.4", + "bs58": "~5.0.0", + "mkdirp": "~3.0.1", + "sodium-universal": "~4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/pzp-keypair/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pzp-set": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pzp-set/-/pzp-set-1.0.0.tgz", + "integrity": "sha512-+BLssohjri/FgNSPSPffkcgBAXAxiycoS9W0kPZJtLeqSCwkhkyhPG3CHhOFhktUJ24wbTDFn0PnhOu0f9ZhbA==", + "dependencies": { + "obz": "~1.1.0", + "pull-stream": "^3.7.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", diff --git a/package.json b/package.json index 12f7755..76722fd 100644 --- a/package.json +++ b/package.json @@ -21,13 +21,13 @@ "@testing-library/user-event": "^13.5.0", "concurrently": "^8.2.2", "debounce": "2.0", - "ppppp-caps": "github:staltz/ppppp-caps#93fa810b9a40b78aef4872d4c2a8412cccb52929", - "ppppp-db": "github:staltz/ppppp-db#cf1532965ea1d16929ed2291a9b737a4ce74caac", + "pzp-caps": "^1.0.0", + "pzp-db": "^1.0.1", "ppppp-dict": "github:staltz/ppppp-dict#c40d51be6cb96982b4fe691a292b3c12b6f49a36", "ppppp-gc": "github:staltz/ppppp-gc#9075f983d8fa9a13c18a63451a78bed5912e78d0", "ppppp-goals": "github:staltz/ppppp-goals#46a8d8889c668cf291607963fd7301f21aa634b5", - "ppppp-keypair": "github:staltz/ppppp-keypair#c33980c580e33f9a35cb0c672b916ec9fe8b4c6d", - "ppppp-set": "github:staltz/ppppp-set#07c3e295b2d09d2d6c3ac6b5b93ad2ea80698452", + "pzp-keypair": "^1.0.0", + "pzp-set": "^1.0.0", "ppppp-sync": "github:staltz/ppppp-sync#93f00dbd04267f472fbf2f3ae63495092d3a921e", "ppppp-conductor": "github:staltz/ppppp-conductor#8ebeb0fb12de766fac21f8292121307cf7d1bd1e", "ppppp-hub-client": "github:staltz/ppppp-hub-client#6dec9c25291155151051e28b048560038c47ea3f", diff --git a/preload.js b/preload.js index 2d85b41..3cd408b 100644 --- a/preload.js +++ b/preload.js @@ -8,8 +8,9 @@ contextBridge.exposeInMainWorld('electronAPI', { setProfileName: (name) => ipcRenderer.invoke('setProfileName', name), writeElements: (actions) => ipcRenderer.invoke('writeElements', actions), onReadElements: (callback) => { - ipcRenderer.invoke('subscribeToReadElements') - ipcRenderer.on('readElements', (_event, value) => callback(value)) + ipcRenderer.invoke('subscribeToReadElements').then(() => { + ipcRenderer.on('readElements', (_event, value) => callback(value)) + }) }, onConnections: (callback) => { ipcRenderer.invoke('subscribeToConnections')