diff options
| author | Adam Soltys <[email protected]> | 2024-10-09 12:52:05 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-10-10 12:18:06 -0700 |
| commit | 4605d7fbd8b94db013b0e5058116e421150f2a47 (patch) | |
| tree | a93d5cd90ec2b2a22917b4a829fd39b4727667b1 /src/routes/(app) | |
| parent | c2716632244bfc13cafe5cd373d8822ad9436664 (diff) | |
| download | coinos-ui-4605d7fbd8b94db013b0e5058116e421150f2a47.tar.gz coinos-ui-4605d7fbd8b94db013b0e5058116e421150f2a47.zip | |
follows
Diffstat (limited to 'src/routes/(app)')
4 files changed, 74 insertions, 49 deletions
diff --git a/src/routes/(app)/[username]/(profile)/+layout.server.ts b/src/routes/(app)/[username]/(profile)/+layout.server.ts index a508de92..308422b3 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.server.ts +++ b/src/routes/(app)/[username]/(profile)/+layout.server.ts @@ -1,6 +1,8 @@ import { get } from "$lib/utils"; -export async function load({ parent }) { +export async function load({ depends, parent }) { + depends("app:user"); + let { subject, user } = await parent(); subject.follows = []; @@ -12,12 +14,13 @@ export async function load({ parent }) { console.log("problem fetching follows", e); } - try { - subject.followers = await get(`/${subject.pubkey}/followers`); - } catch (e) { - console.log("problem fetching followers", e); - } + // try { + // subject.followers = await get(`/${subject.pubkey}/followers`); + // } catch (e) { + // console.log("problem fetching followers", e); + // } + subject.followers = []; if (user) { user.follows = await get(`/${user.pubkey}/follows?tagsonly=true`); } diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index 8259507e..eabaeeea 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -10,18 +10,22 @@ export let data; let { encode, toWords } = bech32m; - let events, user, subject, src, text; - $: ({ events, user, subject, src, rates, text } = data); - $: ({ currency, username: n, display } = subject); + let { events, user, subject, src, rates, text } = data; + let { currency, npub, username: n, display } = subject; + + $: refresh(data); + let refresh = (data) => { + ({ events, user, subject, src, rates, text } = data); + ({ currency, npub, username: n, display } = subject); + }; $: stripped = n.replace(/\s/g, ""); $: username = n.length > 60 ? n.substr(0, 6) : display || stripped; - $: npub = - subject.pubkey && - bech32m.encode("npub", toWords(hexToUint8Array(subject.pubkey)), 180); - $: lnaddr = `${stripped}@${$page.url.host}`; - $: profile = `${$page.url.host}/${stripped}`; + $: lnaddr = subject?.anon + ? subject.lud16 || undefined + : `${stripped}@${$page.url.host}`; + $: profile = `${$page.url.host}/${subject.anon ? npub : stripped}`; let follow = async () => { user.follows.push(["p", subject.pubkey, "wss://nostr.coinos.io", stripped]); @@ -96,37 +100,44 @@ </div> {/if} - <!-- <div> --> - <!-- <div class="flex justify-center gap-2"> --> - <!-- <a href={`/${subject.pubkey}/follows`} --> - <!-- ><b>{subject.follows.length}</b> --> - <!-- <span class="text-secondary">{$t("user.following")}</span></a --> - <!-- > --> - <!-- <a href={`/${subject.pubkey}/followers`} --> - <!-- ><b>{subject.followers.length}</b> --> - <!-- <span class="text-secondary">{$t("user.followers")}</span></a --> - <!-- > --> - <!-- </div> --> - <!-- </div> --> + <div> + <div class="flex justify-center gap-2"> + <a href={`/${subject.pubkey}/follows`} data-sveltekit-preload-data="tap" + ><b>{subject.follows.length}</b> + <span class="text-secondary">{$t("user.following")}</span></a + > + <a + href={`/${subject.pubkey}/followers`} + data-sveltekit-preload-data="tap" + ><b>{subject.followers.length}</b> + <span class="text-secondary">{$t("user.followers")}</span></a + > + </div> + </div> {#if showDetails} <div class="space-y-5 pb-20"> - <div> - <div class="text-secondary">{$t("user.lightningAddress")}</div> - <div class="flex gap-4"> - <div class="break-all grow text-xl"> - {lnaddr} - </div> - <div class="flex mb-auto gap-1"> - <button class="my-auto" on:click={() => copy(lnaddr)} - ><Icon icon="copy" style="max-w-max w-8 min-w-[32px]" /></button - > - <a href={`/qr/${encodeURIComponent(lnaddr)}`} class="my-auto"> - <Icon icon="qr" style="invert max-w-max min-w-[32px]" /> - </a> + {#if lnaddr} + <div> + <div class="text-secondary">{$t("user.lightningAddress")}</div> + <div class="flex gap-4"> + <div class="break-all grow text-xl"> + {lnaddr} + </div> + <div class="flex mb-auto gap-1"> + <button class="my-auto" on:click={() => copy(lnaddr)} + ><Icon + icon="copy" + style="max-w-max w-8 min-w-[32px]" + /></button + > + <a href={`/qr/${encodeURIComponent(lnaddr)}`} class="my-auto"> + <Icon icon="qr" style="invert max-w-max min-w-[32px]" /> + </a> + </div> </div> </div> - </div> + {/if} <div> <div class="text-secondary">{$t("user.url")}</div> <div class="flex gap-4"> diff --git a/src/routes/(app)/[username]/(profile)/follows/+page.svelte b/src/routes/(app)/[username]/(profile)/follows/+page.svelte index e4363796..ff0bdb93 100644 --- a/src/routes/(app)/[username]/(profile)/follows/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/follows/+page.svelte @@ -1,13 +1,24 @@ <script> + import { onMount } from "svelte"; import { t } from "$lib/translations"; import Avatar from "$comp/Avatar.svelte"; import { browser } from "$app/environment"; import VirtualScroll from "svelte-virtual-scroll-list"; + import { invalidate } from "$app/navigation"; export let data; + let { subject: { follows }, } = data; + + $: refresh(data); + let refresh = (data) => { + ({ + subject: { follows }, + } = data); + }; + let w; </script> @@ -18,10 +29,10 @@ {$t("user.following")} </h1> - {#if browser} - {#if follows.length} + {#if follows.length} + {#if browser} <VirtualScroll data={follows} key="pubkey" let:data pageMode={true}> - <a href={`/${data.pubkey}`}> + <a href={`/${data.pubkey}/follows`} data-sveltekit-preload-data="tap"> <div class="flex py-4 text-sm lg:text-lg text-secondary" :key={data.pubkey} @@ -37,15 +48,15 @@ <div class="w-full flex pb-1 text-black my-auto"> <div> - {data.display_name || ""} - <span class="text-secondary">@{data.username}</span> + <div>{data.display_name || ""}</div> + <div class="text-secondary text-base">@{data.name}</div> </div> </div> </div> </a> </VirtualScroll> - {:else} - <div>No follows</div> {/if} + {:else} + <div>No follows</div> {/if} </div> diff --git a/src/routes/(app)/[username]/+layout.server.ts b/src/routes/(app)/[username]/+layout.server.ts index 284501a2..1b95bdd0 100644 --- a/src/routes/(app)/[username]/+layout.server.ts +++ b/src/routes/(app)/[username]/+layout.server.ts @@ -9,13 +9,13 @@ export let load = async ({ }) => { depends("app:user"); - try { + try { let subject = await get(`/users/${username}`); let { user } = await parent(); let expires = new Date(); expires.setSeconds(expires.getSeconds() + 380 * 24 * 60 * 60); - cookies.set("username", username, { path: "/", expires }); + cookies.set("username", username, { path: "/", expires }); return { subject, user }; } catch (e) { |
