diff --git a/main.js b/main.js
index e1325ed..04507aa 100644
--- a/main.js
+++ b/main.js
@@ -90,11 +90,19 @@ async function loadAccount() {
const id = await p(peer.db.account.findOrCreate)({ subdomain: 'account' })
await p(peer.set.load)(id)
await p(peer.dict.load)(id)
- return id
+ const profile = peer.dict.read(id, 'profile')
+ return { id, name: profile?.name ?? '' }
+}
+
+async function setProfileName(ev, name,b,c,d) {
+ console.log('ev',ev,'name',name,b,c,d);
+ await p(peer.dict.update)('profile', { name })
+ return name
}
app.whenReady().then(() => {
ipcMain.handle('loadAccount', loadAccount)
+ ipcMain.handle('setProfileName', setProfileName)
createWindow()
app.on('activate', function () {
diff --git a/package-lock.json b/package-lock.json
index 6ff6c24..19ab7b4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
+ "debounce": "2.0",
"ppppp-caps": "file:../caps",
"ppppp-conductor": "file:../conductor",
"ppppp-db": "file:../db",
@@ -38,10 +39,12 @@
}
},
"../caps": {
+ "name": "ppppp-caps",
"version": "0.0.1",
"license": "CC0-1.0"
},
"../conductor": {
+ "name": "ppppp-conductor",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
@@ -72,6 +75,7 @@
}
},
"../db": {
+ "name": "ppppp-db",
"version": "0.0.1",
"license": "MIT",
"dependencies": {
@@ -113,6 +117,7 @@
}
},
"../dict": {
+ "name": "ppppp-dict",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
@@ -132,6 +137,7 @@
}
},
"../gc": {
+ "name": "ppppp-gc",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
@@ -161,6 +167,7 @@
}
},
"../goals": {
+ "name": "ppppp-goals",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
@@ -188,6 +195,7 @@
}
},
"../hub-client": {
+ "name": "ppppp-hub-client",
"version": "0.0.1",
"license": "MIT",
"dependencies": {
@@ -214,6 +222,7 @@
}
},
"../invite": {
+ "name": "ppppp-invite",
"version": "0.0.1",
"license": "MIT",
"dependencies": {
@@ -239,6 +248,7 @@
}
},
"../keypair": {
+ "name": "ppppp-keypair",
"version": "0.0.1",
"license": "MIT",
"dependencies": {
@@ -261,6 +271,7 @@
}
},
"../promise": {
+ "name": "ppppp-promise",
"version": "0.0.1",
"license": "MIT",
"dependencies": {
@@ -289,6 +300,7 @@
}
},
"../set": {
+ "name": "ppppp-set",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
@@ -309,6 +321,7 @@
}
},
"../sync": {
+ "name": "ppppp-sync",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
@@ -7488,6 +7501,17 @@
"node": ">=10"
}
},
+ "node_modules/debounce": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.0.0.tgz",
+ "integrity": "sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
diff --git a/package.json b/package.json
index e76d5ce..6a787ad 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
+ "debounce": "2.0",
"ppppp-caps": "github:staltz/ppppp-caps",
"ppppp-keypair": "github:staltz/ppppp-keypair",
"ppppp-db": "github:staltz/ppppp-db",
diff --git a/preload.js b/preload.js
index 7f4ebf7..9a8e2a3 100644
--- a/preload.js
+++ b/preload.js
@@ -1,5 +1,6 @@
const { contextBridge, ipcRenderer } = require('electron/renderer')
contextBridge.exposeInMainWorld('electronAPI', {
- loadAccount: () => ipcRenderer.invoke('loadAccount')
-})
\ No newline at end of file
+ loadAccount: () => ipcRenderer.invoke('loadAccount'),
+ setProfileName: (name) => ipcRenderer.invoke('setProfileName', name),
+})
diff --git a/src/App.js b/src/App.js
index 734379d..3b53dca 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,20 +1,51 @@
-import { useEffect, useState } from 'react'
+import { useEffect, useState, createRef } from 'react'
import { Excalidraw } from '@excalidraw/excalidraw'
import './App.css'
+import debounce from 'debounce'
function MyAccount() {
- const [account, setAccountID] = useState(null)
+ const nameInput = createRef()
+ const [loaded, setLoaded] = useState(false)
+ const [id, setID] = useState('')
+
useEffect(() => {
- window.electronAPI.loadAccount().then((accountID) => {
- setAccountID(accountID)
+ window.electronAPI.loadAccount().then((account) => {
+ setID(account.id)
+ function tryToSetName() {
+ if (nameInput.current) {
+ nameInput.current.value = account.name
+ setLoaded(true)
+ } else {
+ setTimeout(tryToSetName, 100)
+ }
+ }
+ tryToSetName()
})
})
+ const updateProfileName = debounce((ev) => {
+ const sendableName = ev.target.value
+ window.electronAPI.setProfileName(sendableName).then((name) => {
+ nameInput.current.value = name
+ })
+ }, 2000)
+
return (
<>
- My name is
-
- {' ' + account}
+
+
+ {loaded ? id : '50726f7061676174696f6e205a6f6e652050726f746f636f6c'}
>
)