aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-12-28 15:05:00 -0800
committerAdam Soltys <[email protected]>2022-12-28 15:05:00 -0800
commit065721964152f1022e755c33d24353beaa07abd1 (patch)
tree8abece462a0f4c8269f343ea1f4679a9d4e36a29 /src
parent671ec0529f466c3fc9218e928486f0277bd4c990 (diff)
downloadcoinos-ui-065721964152f1022e755c33d24353beaa07abd1.tar.gz
coinos-ui-065721964152f1022e755c33d24353beaa07abd1.zip
get follows and followers working
Diffstat (limited to 'src')
-rw-r--r--src/lib/nostr.js17
-rw-r--r--src/lib/utils.js5
-rw-r--r--src/routes/(app)/[username]/(profile)/+layout.svelte2
-rw-r--r--src/routes/(app)/[username]/(profile)/followers/+page.svelte4
-rw-r--r--src/routes/(app)/[username]/(profile)/follows/+page.svelte4
-rw-r--r--src/routes/(app)/[username]/+layout.server.js3
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');
}
};