diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/nostr.js | 17 | ||||
| -rw-r--r-- | src/lib/utils.js | 5 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/+layout.svelte | 2 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/followers/+page.svelte | 4 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/follows/+page.svelte | 4 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/+layout.server.js | 3 |
6 files changed, 13 insertions, 22 deletions
diff --git a/src/lib/nostr.js b/src/lib/nostr.js index 7523e97f..3f112788 100644 --- a/src/lib/nostr.js +++ b/src/lib/nostr.js @@ -2,28 +2,19 @@ import { get } from 'svelte/store'; import { entropyToMnemonic, mnemonicToSeedSync } from 'bip39'; import { Buffer } from 'buffer'; import { bech32m } from 'bech32'; -import { bip32, post, stretch } from '$lib/utils'; +import { bip32, wait, post, stretch } from '$lib/utils'; import { calculateId, signId } from 'nostr'; import { password as pw, passwordPrompt } from '$lib/store'; const { decode, fromWords } = bech32m; -let signing; - -pw.subscribe((nv, ov) => { - if (!signing) return; - sign(signing); -}); - export let sign = async ({ event, user }) => { - signing = { event, user }; let { cipher, username, salt } = user; let password = get(pw); if (!password) { passwordPrompt.set(true); - return; } try { @@ -31,9 +22,11 @@ export let sign = async ({ event, user }) => { } catch (e) { console.log(e); passwordPrompt.set(true); - return; } + await wait(() => !!get(pw)); + password = get(pw); + let mnemonic, key, seed, entropy, child, privkey; entropy = Buffer.from( await crypto.subtle.decrypt( @@ -52,8 +45,6 @@ export let sign = async ({ event, user }) => { event.id = await calculateId(event); event.sig = await signId(privkey, event.id); - - signing = false; }; export let send = (event) => { diff --git a/src/lib/utils.js b/src/lib/utils.js index e1088cac..e5441575 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -172,9 +172,10 @@ export const sats = 100000000; export const back = () => browser && history.go(-1); export const focus = (el) => setTimeout(() => el.focus()); -export const wait = async (f, s = 300) => { +export const sleep = (n) => new Promise((r) => setTimeout(r, n)); +export const wait = async (f, n = 100, s = 300) => { let i = 0; - while (!(await f()) && i < s) (await sleep(1000)) && i++; + while (!(await f()) && i < s) (await sleep(n)) && i++; if (i >= s) throw new Error('timeout'); return f(); }; diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index 3fc01721..a99828b6 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -56,7 +56,7 @@ </div> <div class="flex flex-wrap gap-2 w-full"> - {#if user && user.username !== subject.username} + {#if user && user.username !== subject.username && subject.pubkey} {#if following} <div class="w-full flex"> <button diff --git a/src/routes/(app)/[username]/(profile)/followers/+page.svelte b/src/routes/(app)/[username]/(profile)/followers/+page.svelte index a718ff15..d1e06ea8 100644 --- a/src/routes/(app)/[username]/(profile)/followers/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/followers/+page.svelte @@ -13,9 +13,9 @@ <div class="mt-24 mb-20 px-3 md:px-0 w-full md:w-[400px] mx-auto space-y-8"> {#if browser} {#if followers.length} - <VirtualScroll data={followers} key="username" let:data pageMode={true}> + <VirtualScroll data={followers} key="pubkey" let:data pageMode={true}> <a href={`/${data.username}`}> - <div class="flex border-b py-4 text-sm lg:text-lg text-secondary" :key={data.username}> + <div class="flex border-b py-4 text-sm lg:text-lg text-secondary" :key={data.pubkey}> <div class="mb-auto mr-2"> <div class="md:hidden"> <Avatar size={12} user={data} disabled={true} /> diff --git a/src/routes/(app)/[username]/(profile)/follows/+page.svelte b/src/routes/(app)/[username]/(profile)/follows/+page.svelte index 87e34501..96b30475 100644 --- a/src/routes/(app)/[username]/(profile)/follows/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/follows/+page.svelte @@ -13,9 +13,9 @@ <div class="mt-24 mb-20 px-3 md:px-0 w-full md:w-[400px] mx-auto space-y-8"> {#if browser} {#if follows.length} - <VirtualScroll data={follows} key="username" let:data pageMode={true}> + <VirtualScroll data={follows} key="pubkey" let:data pageMode={true}> <a href={`/${data.username}`}> - <div class="flex border-b py-4 text-sm lg:text-lg text-secondary" :key={data.username}> + <div class="flex border-b py-4 text-sm lg:text-lg text-secondary" :key={data.pubkey}> <div class="mb-auto mr-2"> <div class="md:hidden"> <Avatar size={12} user={data} disabled={true} /> diff --git a/src/routes/(app)/[username]/+layout.server.js b/src/routes/(app)/[username]/+layout.server.js index 5e41fd4e..d1b203d7 100644 --- a/src/routes/(app)/[username]/+layout.server.js +++ b/src/routes/(app)/[username]/+layout.server.js @@ -7,8 +7,7 @@ export let load = async ({ depends, params: { username } }) => { try { return { subject: await get(`/users/${username}`) }; } catch (e) { - if (username.length === 64) - return { subject: { username: username.substr(0, 6), pubkey: username, anon: true } }; + console.log(e); throw error(500, 'Unable to retrieve user account data'); } }; |
