set profile name in ppppp-dict

This commit is contained in:
Andre Staltz 2024-01-05 17:48:32 +02:00
parent 2c4ed895fc
commit 8cd3dc130d
No known key found for this signature in database
GPG Key ID: 9EDE23EA7E8A4890
5 changed files with 75 additions and 10 deletions

10
main.js
View File

@ -90,11 +90,19 @@ async function loadAccount() {
const id = await p(peer.db.account.findOrCreate)({ subdomain: 'account' }) const id = await p(peer.db.account.findOrCreate)({ subdomain: 'account' })
await p(peer.set.load)(id) await p(peer.set.load)(id)
await p(peer.dict.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(() => { app.whenReady().then(() => {
ipcMain.handle('loadAccount', loadAccount) ipcMain.handle('loadAccount', loadAccount)
ipcMain.handle('setProfileName', setProfileName)
createWindow() createWindow()
app.on('activate', function () { app.on('activate', function () {

24
package-lock.json generated
View File

@ -12,6 +12,7 @@
"@testing-library/jest-dom": "^5.17.0", "@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0", "@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0", "@testing-library/user-event": "^13.5.0",
"debounce": "2.0",
"ppppp-caps": "file:../caps", "ppppp-caps": "file:../caps",
"ppppp-conductor": "file:../conductor", "ppppp-conductor": "file:../conductor",
"ppppp-db": "file:../db", "ppppp-db": "file:../db",
@ -38,10 +39,12 @@
} }
}, },
"../caps": { "../caps": {
"name": "ppppp-caps",
"version": "0.0.1", "version": "0.0.1",
"license": "CC0-1.0" "license": "CC0-1.0"
}, },
"../conductor": { "../conductor": {
"name": "ppppp-conductor",
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -72,6 +75,7 @@
} }
}, },
"../db": { "../db": {
"name": "ppppp-db",
"version": "0.0.1", "version": "0.0.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -113,6 +117,7 @@
} }
}, },
"../dict": { "../dict": {
"name": "ppppp-dict",
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
@ -132,6 +137,7 @@
} }
}, },
"../gc": { "../gc": {
"name": "ppppp-gc",
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -161,6 +167,7 @@
} }
}, },
"../goals": { "../goals": {
"name": "ppppp-goals",
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -188,6 +195,7 @@
} }
}, },
"../hub-client": { "../hub-client": {
"name": "ppppp-hub-client",
"version": "0.0.1", "version": "0.0.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -214,6 +222,7 @@
} }
}, },
"../invite": { "../invite": {
"name": "ppppp-invite",
"version": "0.0.1", "version": "0.0.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -239,6 +248,7 @@
} }
}, },
"../keypair": { "../keypair": {
"name": "ppppp-keypair",
"version": "0.0.1", "version": "0.0.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -261,6 +271,7 @@
} }
}, },
"../promise": { "../promise": {
"name": "ppppp-promise",
"version": "0.0.1", "version": "0.0.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -289,6 +300,7 @@
} }
}, },
"../set": { "../set": {
"name": "ppppp-set",
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
@ -309,6 +321,7 @@
} }
}, },
"../sync": { "../sync": {
"name": "ppppp-sync",
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -7488,6 +7501,17 @@
"node": ">=10" "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": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",

View File

@ -17,6 +17,7 @@
"@testing-library/jest-dom": "^5.17.0", "@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0", "@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0", "@testing-library/user-event": "^13.5.0",
"debounce": "2.0",
"ppppp-caps": "github:staltz/ppppp-caps", "ppppp-caps": "github:staltz/ppppp-caps",
"ppppp-keypair": "github:staltz/ppppp-keypair", "ppppp-keypair": "github:staltz/ppppp-keypair",
"ppppp-db": "github:staltz/ppppp-db", "ppppp-db": "github:staltz/ppppp-db",

View File

@ -1,5 +1,6 @@
const { contextBridge, ipcRenderer } = require('electron/renderer') const { contextBridge, ipcRenderer } = require('electron/renderer')
contextBridge.exposeInMainWorld('electronAPI', { contextBridge.exposeInMainWorld('electronAPI', {
loadAccount: () => ipcRenderer.invoke('loadAccount') loadAccount: () => ipcRenderer.invoke('loadAccount'),
setProfileName: (name) => ipcRenderer.invoke('setProfileName', name),
}) })

View File

@ -1,20 +1,51 @@
import { useEffect, useState } from 'react' import { useEffect, useState, createRef } from 'react'
import { Excalidraw } from '@excalidraw/excalidraw' import { Excalidraw } from '@excalidraw/excalidraw'
import './App.css' import './App.css'
import debounce from 'debounce'
function MyAccount() { function MyAccount() {
const [account, setAccountID] = useState(null) const nameInput = createRef()
const [loaded, setLoaded] = useState(false)
const [id, setID] = useState('')
useEffect(() => { useEffect(() => {
window.electronAPI.loadAccount().then((accountID) => { window.electronAPI.loadAccount().then((account) => {
setAccountID(accountID) 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 ( return (
<> <>
<span className="text-sm">My name is</span> <input
<span className="text-xs text-gray-500 font-mono overflow-x-hidden overflow-ellipsis"> key="input"
{' ' + account} ref={nameInput}
type="text"
placeholder={loaded ? 'Set your name' : 'Loading...'}
className="border border-gray-400 rounded px-1 outline-offset-3 outline-2 outline-green-500"
onChange={updateProfileName}
disabled={!loaded}
/>
<span
key="span"
className="mt-1 text-xs text-gray-500 font-mono overflow-x-hidden overflow-ellipsis"
>
{loaded ? id : '50726f7061676174696f6e205a6f6e652050726f746f636f6c'}
</span> </span>
</> </>
) )