From cf9ccd673cbbf29d9c9d00c2d379382f0a9c06c0 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 27 Dec 2022 22:49:25 -0800 Subject: show follows and followers --- src/routes/(app)/+layout.svelte | 8 +- .../(app)/[username]/(profile)/+layout.server.js | 6 + .../(app)/[username]/(profile)/+layout.svelte | 130 +++++++++++++++++++++ .../(app)/[username]/(profile)/+page.server.js | 21 ++++ src/routes/(app)/[username]/(profile)/+page.svelte | 18 +++ .../[username]/(profile)/followers/+page.server.js | 10 ++ .../[username]/(profile)/followers/+page.svelte | 40 +++++++ .../[username]/(profile)/follows/+page.server.js | 11 ++ .../[username]/(profile)/follows/+page.svelte | 40 +++++++ src/routes/(app)/[username]/+page.server.js | 25 ---- src/routes/(app)/[username]/+page.svelte | 88 -------------- .../[username]/settings/[...tab]/+page.svelte | 25 +--- 12 files changed, 285 insertions(+), 137 deletions(-) create mode 100644 src/routes/(app)/[username]/(profile)/+layout.server.js create mode 100644 src/routes/(app)/[username]/(profile)/+layout.svelte create mode 100644 src/routes/(app)/[username]/(profile)/+page.server.js create mode 100644 src/routes/(app)/[username]/(profile)/+page.svelte create mode 100644 src/routes/(app)/[username]/(profile)/followers/+page.server.js create mode 100644 src/routes/(app)/[username]/(profile)/followers/+page.svelte create mode 100644 src/routes/(app)/[username]/(profile)/follows/+page.server.js create mode 100644 src/routes/(app)/[username]/(profile)/follows/+page.svelte delete mode 100644 src/routes/(app)/[username]/+page.server.js delete mode 100644 src/routes/(app)/[username]/+page.svelte (limited to 'src/routes/(app)') diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index 4cd08ab4..7178917a 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -2,11 +2,11 @@ import { SvelteToast } from '@zerodevx/svelte-toast'; import { onDestroy, onMount } from 'svelte'; import { close, connect, send } from '$lib/socket'; - import { last, selectedRate, invoice, rate, user, request } from '$lib/store'; + import { last, selectedRate, invoice, rate, user, request, passwordPrompt } from '$lib/store'; import { page } from '$app/stores'; import { browser } from '$app/environment'; import { goto } from '$app/navigation'; - import { LoadingSplash, Invoice, Request } from '$comp'; + import { LoadingSplash, Invoice, Password, Request } from '$comp'; import { warning, protectedRoutes } from '$lib/utils'; import { t, locale } from '$lib/translations'; @@ -58,6 +58,10 @@ onDestroy(() => browser && clearTimeout(timer)); +{#if $passwordPrompt} + +{/if} + {#if subject} coinos - {subject.username} diff --git a/src/routes/(app)/[username]/(profile)/+layout.server.js b/src/routes/(app)/[username]/(profile)/+layout.server.js new file mode 100644 index 00000000..c97c7bdb --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/+layout.server.js @@ -0,0 +1,6 @@ +export async function load({ depends, parent }) { + depends('app:user'); + let { subject } = await parent(); + console.log('SUBJ', subject); + return { subject }; +} diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte new file mode 100644 index 00000000..3fc01721 --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -0,0 +1,130 @@ + + +
+ diff --git a/src/routes/(app)/[username]/(profile)/+page.server.js b/src/routes/(app)/[username]/(profile)/+page.server.js new file mode 100644 index 00000000..9c91efae --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/+page.server.js @@ -0,0 +1,21 @@ +import { get } from '$lib/utils'; + +export async function load({ params, parent, url }) { + let { subject } = await parent(); + let { pubkey } = subject; + if (!pubkey) pubkey = params.username; + + let events = []; + + try { + events = await get(`/nostr/${pubkey}`); + } catch (e) { + console.log(`failed to fetch nostr events for ${pubkey}`, e); + } + + events.map((e) => { + e.seen = e.created_at; + }); + + return { events }; +} diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte new file mode 100644 index 00000000..19687ed0 --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/+page.svelte @@ -0,0 +1,18 @@ + + +{#if events.length} + +{:else} +
+ Nothing here yet. Post your first nostr note! +
+{/if} diff --git a/src/routes/(app)/[username]/(profile)/followers/+page.server.js b/src/routes/(app)/[username]/(profile)/followers/+page.server.js new file mode 100644 index 00000000..a05d324d --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/followers/+page.server.js @@ -0,0 +1,10 @@ +import { get } from '$lib/utils'; + +export async function load({ params, parent, url }) { + let { subject } = await parent(); + let { pubkey } = subject; + + let followers = await get(`/${pubkey}/followers`); + + return { followers }; +} diff --git a/src/routes/(app)/[username]/(profile)/followers/+page.svelte b/src/routes/(app)/[username]/(profile)/followers/+page.svelte new file mode 100644 index 00000000..a718ff15 --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/followers/+page.svelte @@ -0,0 +1,40 @@ + + + + +
+ {#if browser} + {#if followers.length} + + +
+
+
+ +
+ +
+ +
+
+ {data.display_name || ''} @{data.username} +
+
+
+
+
+ {:else} +
No followers
+ {/if} + {/if} +
diff --git a/src/routes/(app)/[username]/(profile)/follows/+page.server.js b/src/routes/(app)/[username]/(profile)/follows/+page.server.js new file mode 100644 index 00000000..60b95636 --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/follows/+page.server.js @@ -0,0 +1,11 @@ +import { get } from '$lib/utils'; + +export async function load({ params, parent, url }) { + let { subject } = await parent(); + let { pubkey } = subject; + + let follows = await get(`/${pubkey}/follows`); + + console.log('GOT', follows); + return { follows }; +} diff --git a/src/routes/(app)/[username]/(profile)/follows/+page.svelte b/src/routes/(app)/[username]/(profile)/follows/+page.svelte new file mode 100644 index 00000000..87e34501 --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/follows/+page.svelte @@ -0,0 +1,40 @@ + + + + +
+ {#if browser} + {#if follows.length} + + +
+
+
+ +
+ +
+ +
+
+ {data.display_name || ''} @{data.username} +
+
+
+
+
+ {:else} +
No follows
+ {/if} + {/if} +
diff --git a/src/routes/(app)/[username]/+page.server.js b/src/routes/(app)/[username]/+page.server.js deleted file mode 100644 index e406253f..00000000 --- a/src/routes/(app)/[username]/+page.server.js +++ /dev/null @@ -1,25 +0,0 @@ -import { get } from '$lib/utils'; -import Qr from 'qrcode-base64'; - -export async function load({ params, parent, url }) { - let { subject } = await parent(); - let { pubkey } = subject; - if (!pubkey) pubkey = params.username; - - let { username } = params; - let text = `${encodeURI(username)}@${url.hostname}`; - let src = Qr.drawImg(text, { size: 300 }); - let events = []; - - try { - events = await get(`/${pubkey}/events`); - } catch (e) { - console.log(e); - } - - events.map((e) => { - e.seen = e.created_at; - }); - - return { events, src, text }; -} diff --git a/src/routes/(app)/[username]/+page.svelte b/src/routes/(app)/[username]/+page.svelte deleted file mode 100644 index f4598e6f..00000000 --- a/src/routes/(app)/[username]/+page.svelte +++ /dev/null @@ -1,88 +0,0 @@ - - -
- diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte index 55963105..b02ddca4 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte @@ -3,10 +3,10 @@ import { fly } from 'svelte/transition'; import { applyAction, deserialize } from '$app/forms'; - import { Icon, Spinner, Pin, Password } from '$comp'; + import { Icon, Spinner, Pin } from '$comp'; import { t } from '$lib/translations'; import { failure, post, success } from '$lib/utils'; - import { avatarUpload, bannerUpload, passwordPrompt, password, pin } from '$lib/store'; + import { avatarUpload, bannerUpload, pin } from '$lib/store'; import { upload } from '$lib/upload'; import { page } from '$app/stores'; import { sign, send } from '$lib/nostr'; @@ -66,19 +66,6 @@ failure('Something went wrong'); } - if (!$password) { - $passwordPrompt = true; - return; - } - - try { - await post('/password', { password: $password }); - } catch (e) { - console.log(e); - $passwordPrompt = true; - return; - } - let event = { pubkey: user.pubkey, created_at: Math.floor(Date.now() / 1000), @@ -91,7 +78,7 @@ tags: [] }; - await sign(event, user, $password); + await sign({ event, user }); await send(event); const response = await fetch(formElement.action, { @@ -111,18 +98,12 @@ let loaded; onMount(() => setTimeout(() => (loaded = true), 50)); - - $: loading && $password && handleSubmit(); {#if loaded && user.haspin && $pin?.length !== 6} {/if} -{#if $passwordPrompt} - -{/if} -