diff options
| author | Adam Soltys <[email protected]> | 2024-02-07 22:26:31 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-02-07 22:26:31 -0800 |
| commit | 896d24b3f24500a25a7ac4111357cee4e0390eae (patch) | |
| tree | 85ffc8f27a4e311dbcff0e8ec736c5d80265c09e | |
| parent | 598533905e1e148204775e3851cd873f61fa2d80 (diff) | |
| download | coinos-ui-896d24b3f24500a25a7ac4111357cee4e0390eae.tar.gz coinos-ui-896d24b3f24500a25a7ac4111357cee4e0390eae.zip | |
update nsec at submit time
| -rwxr-xr-x | bun.lockb | bin | 120440 -> 120406 bytes | |||
| -rw-r--r-- | package.json | 22 | ||||
| -rw-r--r-- | src/lib/nostr.js | 17 | ||||
| -rw-r--r-- | src/routes/(app)/+layout.svelte | 2 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/+page.svelte | 5 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/generate/+page.svelte | 13 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/messages/+page.svelte | 1 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/settings/[...tab]/+page.svelte | 4 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/settings/[...tab]/_security.svelte | 7 |
9 files changed, 26 insertions, 45 deletions
| Binary files differ diff --git a/package.json b/package.json index e4e87934..091cded0 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,8 @@ { "name": "my-app", "version": "0.0.1", - "scripts": { - "dev": "vite dev", - "build": "vite build", - "docker": "docker build . -t coinos-ui", - "preview": "vite preview", - "lint": "prettier --check --plugin-search-dir=. .", - "format": "prettier --write --plugin-search-dir=. ." - }, "devDependencies": { + "@asoltys/nostr-tools": "^2.1.7", "@scure/base": "^1.1.1", "@scure/bip39": "^1.2.1", "@sveltejs/adapter-node": "^2.0.0", @@ -48,8 +41,13 @@ "uuid": "^9.0.0", "vite": "^5.0.0" }, - "type": "module", - "dependencies": { - "nostr-tools": "https://github.com/nbd-wtf/nostr-tools#b9435af70872b83d57d8857b43113130b5f0cba6" - } + "scripts": { + "dev": "vite dev", + "build": "vite build", + "docker": "docker build . -t coinos-ui", + "preview": "vite preview", + "lint": "prettier --check --plugin-search-dir=. .", + "format": "prettier --write --plugin-search-dir=. ." + }, + "type": "module" } diff --git a/src/lib/nostr.js b/src/lib/nostr.js index 66f3bd3a..7af0cef8 100644 --- a/src/lib/nostr.js +++ b/src/lib/nostr.js @@ -1,3 +1,4 @@ +import { hexToUint8Array } from "uint8array-extras"; import { get } from "svelte/store"; import { Buffer } from "buffer"; import { fail, wait, post, stretch } from "$lib/utils"; @@ -84,7 +85,9 @@ function typedArrayToBuffer(array) { export let getPrivateKey = async (user) => { let { nsec, username, salt } = user; - let privkey = privateKeyFromSeedWords(await getMnemonic(user)); + let privkey = hexToUint8Array( + privateKeyFromSeedWords(await getMnemonic(user)) + ); if (nsec) { let decrypted = nip49decrypt(nsec, await getPassword()); @@ -135,17 +138,7 @@ export let send = (event) => { }; let getPassword = async () => { - let password = get(pw); - - if (!password) passwordPrompt.set(true); - else { - try { - await post("/password", { password }); - } catch (e) { - passwordPrompt.set(true); - } - } - + if (!get(pw)) passwordPrompt.set(true); await wait(() => !!get(pw)); return get(pw); }; diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index d33aa193..07f8a2a1 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -99,7 +99,7 @@ }); </script> -{#if browser && $passwordPrompt} +{#if browser && user && $passwordPrompt} <Password {user} /> {/if} diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte index c52009a7..9dd968b6 100644 --- a/src/routes/(app)/[username]/(profile)/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/+page.svelte @@ -22,7 +22,7 @@ let ready; e.subscribe(async (event) => { - if (!(event && ready)) return; + if (!(browser && event && ready)) return; if ( event.recipient?.id === user.id && !~latest.findIndex((m) => m.id === event.id) @@ -43,7 +43,7 @@ let initialize = async (p) => { let i = 0; ready = false; - if (!p || !user) return; + if (!(browser && user)) return; while (i < messages.length) { let event = messages[i]; i++; @@ -54,6 +54,7 @@ event.author.id === user.id ? event.recipient?.pubkey : event.author.pubkey; + if (!keys.has(k)) { keys.add(k); event.content = await decrypt({ event, user }); diff --git a/src/routes/(app)/[username]/generate/+page.svelte b/src/routes/(app)/[username]/generate/+page.svelte index b9b077a3..767b7545 100644 --- a/src/routes/(app)/[username]/generate/+page.svelte +++ b/src/routes/(app)/[username]/generate/+page.svelte @@ -4,7 +4,7 @@ import { goto, invalidate } from "$app/navigation"; import Pin from "$comp/Pin.svelte"; import Spinner from "$comp/Spinner.svelte"; - import { loginRedirect, pin, password, passwordPrompt } from "$lib/store"; + import { loginRedirect, pin, password } from "$lib/store"; import { generate } from "$lib/nostr"; import { browser } from "$app/environment"; @@ -20,17 +20,6 @@ return; } - console.log("PASSWORRRRD", $password); - if (!$password) $passwordPrompt = true; - - try { - await post("/password", { password: $password }); - } catch (e) { - $passwordPrompt = true; - } - - await wait(() => $password); - try { await generate(user); } catch (e) { diff --git a/src/routes/(app)/[username]/messages/+page.svelte b/src/routes/(app)/[username]/messages/+page.svelte index 263f7294..48855a26 100644 --- a/src/routes/(app)/[username]/messages/+page.svelte +++ b/src/routes/(app)/[username]/messages/+page.svelte @@ -41,7 +41,6 @@ $: initialize($password); let initialize = async (p) => { - if (!p) return; await Promise.all( messages.map( async (event) => (event.message = await decrypt({ event, user })) diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte index 383785ec..819d4e80 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte @@ -12,7 +12,7 @@ import { avatar, banner, password, pin } from "$lib/store"; import { upload } from "$lib/upload"; import { page } from "$app/stores"; - import { sign, send, reEncryptEntropy } from "$lib/nostr"; + import { sign, send, reEncryptEntropy, setNsec } from "$lib/nostr"; import { invalidateAll } from "$app/navigation"; import Account from "./_account.svelte"; @@ -77,6 +77,8 @@ submitting = true; let data = new FormData(formElement); + if (data.get("newNsec")) setNsec(user, data.get("newNsec")) + if (data.get("password")) { try { data.set( diff --git a/src/routes/(app)/[username]/settings/[...tab]/_security.svelte b/src/routes/(app)/[username]/settings/[...tab]/_security.svelte index 7151f619..c57b5262 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_security.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_security.svelte @@ -1,5 +1,5 @@ <script> - import { getMnemonic, getNsec, setNsec } from "$lib/nostr"; + import { getMnemonic, getNsec } from "$lib/nostr"; import { tick } from "svelte"; import { t } from "$lib/translations"; import Pin from "$comp/Pin.svelte"; @@ -17,7 +17,7 @@ importing, locked, mnemonic, - newNsec = "nsec13wekuqstlsyfrzm369yh6vjaphslq5pq9kze74acqqynjm8lvpms4qzsx9", + newNsec, nsec, old, otp, @@ -323,10 +323,9 @@ {#if importing} <input - name="nsec" + name="newNsec" bind:value={newNsec} placeholder="nsec..." - on:blur={() => setNsec(user, newNsec)} /> {/if} |
