From 896d24b3f24500a25a7ac4111357cee4e0390eae Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 7 Feb 2024 22:26:31 -0800 Subject: update nsec at submit time --- src/lib/nostr.js | 17 +++++------------ src/routes/(app)/+layout.svelte | 2 +- src/routes/(app)/[username]/(profile)/+page.svelte | 5 +++-- src/routes/(app)/[username]/generate/+page.svelte | 13 +------------ src/routes/(app)/[username]/messages/+page.svelte | 1 - .../(app)/[username]/settings/[...tab]/+page.svelte | 4 +++- .../(app)/[username]/settings/[...tab]/_security.svelte | 7 +++---- 7 files changed, 16 insertions(+), 33 deletions(-) (limited to 'src') 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 @@ }); -{#if browser && $passwordPrompt} +{#if browser && user && $passwordPrompt} {/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 @@