aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-02-07 22:26:31 -0800
committerAdam Soltys <[email protected]>2024-02-07 22:26:31 -0800
commit896d24b3f24500a25a7ac4111357cee4e0390eae (patch)
tree85ffc8f27a4e311dbcff0e8ec736c5d80265c09e
parent598533905e1e148204775e3851cd873f61fa2d80 (diff)
downloadcoinos-ui-896d24b3f24500a25a7ac4111357cee4e0390eae.tar.gz
coinos-ui-896d24b3f24500a25a7ac4111357cee4e0390eae.zip
update nsec at submit time
-rwxr-xr-xbun.lockbbin120440 -> 120406 bytes
-rw-r--r--package.json22
-rw-r--r--src/lib/nostr.js17
-rw-r--r--src/routes/(app)/+layout.svelte2
-rw-r--r--src/routes/(app)/[username]/(profile)/+page.svelte5
-rw-r--r--src/routes/(app)/[username]/generate/+page.svelte13
-rw-r--r--src/routes/(app)/[username]/messages/+page.svelte1
-rw-r--r--src/routes/(app)/[username]/settings/[...tab]/+page.svelte4
-rw-r--r--src/routes/(app)/[username]/settings/[...tab]/_security.svelte7
9 files changed, 26 insertions, 45 deletions
diff --git a/bun.lockb b/bun.lockb
index 84de2da7..c2e0a77c 100755
--- a/bun.lockb
+++ b/bun.lockb
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}