buttons to save settings.

This commit is contained in:
fiatjaf
2022-03-04 16:50:04 -03:00
parent 64c12c2286
commit 33fbd39c6d
2 changed files with 37 additions and 26 deletions

View File

@@ -1,7 +1,7 @@
{ {
"name": "nos2x", "name": "nos2x",
"description": "Nostr Signer Extension", "description": "Nostr Signer Extension",
"version": "1.4.0", "version": "1.4.1",
"homepage_url": "https://github.com/fiatjaf/nos2x", "homepage_url": "https://github.com/fiatjaf/nos2x",
"manifest_version": 3, "manifest_version": 3,
"icons": { "icons": {

View File

@@ -2,7 +2,6 @@ import browser from 'webextension-polyfill'
import React, {useState, useCallback, useEffect} from 'react' import React, {useState, useCallback, useEffect} from 'react'
import {render} from 'react-dom' import {render} from 'react-dom'
import {normalizeRelayURL} from 'nostr-tools/relay' import {normalizeRelayURL} from 'nostr-tools/relay'
import {useDebouncedCallback} from 'use-debounce'
import {getPermissionsString, readPermissions} from './common' import {getPermissionsString, readPermissions} from './common'
@@ -18,21 +17,6 @@ function Options() {
setTimeout(setMessage, 3000) setTimeout(setMessage, 3000)
}) })
const saveRelays = useDebouncedCallback(async () => {
await browser.storage.local.set({
relays: Object.fromEntries(
relays
.filter(({url}) => url.trim() !== '')
.map(({url, policy}) => [url.trim(), policy])
)
})
showMessage('saved relays!')
}, 700)
useEffect(() => {
saveRelays()
}, [relays])
useEffect(() => { useEffect(() => {
browser.storage.local.get(['private_key', 'relays']).then(results => { browser.storage.local.get(['private_key', 'relays']).then(results => {
if (results.private_key) setKey(results.private_key) if (results.private_key) setKey(results.private_key)
@@ -75,7 +59,7 @@ function Options() {
{relays.map(({url, policy}, i) => ( {relays.map(({url, policy}, i) => (
<div key={i} style={{display: 'flex'}}> <div key={i} style={{display: 'flex'}}>
<input <input
style={{marginRight: '10px'}} style={{marginRight: '10px', width: '400px'}}
value={url} value={url}
onChange={changeRelayURL.bind(null, i)} onChange={changeRelayURL.bind(null, i)}
/> />
@@ -99,17 +83,33 @@ function Options() {
))} ))}
<div style={{display: 'flex'}}> <div style={{display: 'flex'}}>
<input <input
style={{width: '400px'}}
value={newRelayURL} value={newRelayURL}
onChange={e => setNewRelayURL(e.target.value)} onChange={e => setNewRelayURL(e.target.value)}
onBlur={addNewRelay} onBlur={addNewRelay}
/> />
</div> </div>
<div>
<button onClick={saveRelays}>save</button>
</div>
</div> </div>
</div> </div>
<div> <div>
<label> <label>
private key:&nbsp; <div>private key:&nbsp;</div>
<input value={key} onChange={handleKeyChange} /> <div style={{marginLeft: '10px'}}>
<input
style={{width: '500px'}}
value={key}
onChange={handleKeyChange}
/>
<button
disabled={!(key.match(/^[a-f0-9]{64}$/) || key === '')}
onClick={saveKey}
>
save
</button>
</div>
</label> </label>
{permissions?.length > 0 && ( {permissions?.length > 0 && (
<> <>
@@ -150,14 +150,14 @@ function Options() {
async function handleKeyChange(e) { async function handleKeyChange(e) {
let key = e.target.value.toLowerCase().trim() let key = e.target.value.toLowerCase().trim()
setKey(key) setKey(key)
}
if (key.match(/^[a-f0-9]{64}$/) || key === '') { async function saveKey() {
await browser.storage.local.set({ await browser.storage.local.set({
private_key: key private_key: key
}) })
showMessage('saved private key!') showMessage('saved private key!')
} }
}
function changeRelayURL(i, ev) { function changeRelayURL(i, ev) {
setRelays([ setRelays([
@@ -186,6 +186,17 @@ function Options() {
setRelays(relays) setRelays(relays)
setNewRelayURL('') setNewRelayURL('')
} }
async function saveRelays() {
await browser.storage.local.set({
relays: Object.fromEntries(
relays
.filter(({url}) => url.trim() !== '')
.map(({url, policy}) => [url.trim(), policy])
)
})
showMessage('saved relays!')
}
} }
render(<Options />, document.getElementById('main')) render(<Options />, document.getElementById('main'))