diff options
| author | Adam Soltys <[email protected]> | 2024-10-10 10:16:03 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-10-10 12:18:06 -0700 |
| commit | 34d68f2c8f97f35514ada10aee3207c134846c78 (patch) | |
| tree | c46f52f2a2fed84dbb4253a4c98ba22e4e94fa9c /src | |
| parent | aa5ab97f1b314bd4e7a2358e49572eb1a02baf7b (diff) | |
| download | coinos-ui-34d68f2c8f97f35514ada10aee3207c134846c78.tar.gz coinos-ui-34d68f2c8f97f35514ada10aee3207c134846c78.zip | |
await data
Diffstat (limited to 'src')
3 files changed, 30 insertions, 45 deletions
diff --git a/src/routes/(app)/[username]/(profile)/+layout.server.ts b/src/routes/(app)/[username]/(profile)/+layout.server.ts index 14580694..bf499fb1 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.server.ts +++ b/src/routes/(app)/[username]/(profile)/+layout.server.ts @@ -5,25 +5,10 @@ export async function load({ depends, parent }) { let { subject, user } = await parent(); - subject.follows = []; - subject.followers = []; + let count = get(`/${subject.pubkey}/count`).catch(() => 0); + let follows = get(`/${subject.pubkey}/follows`).catch(() => []); + let followers = get(`/${subject.pubkey}/followers`).catch(() => []); + let followList = get(`/${user.pubkey}/follows?tagsonly=true`).catch(() => []); - try { - subject.follows = await get(`/${subject.pubkey}/follows`); - } catch (e) { - console.log("problem fetching follows", 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`); - } - - return { subject, user }; + return { count, follows, followers, followList }; } diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index 550b43cf..02eaa7ad 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -13,7 +13,18 @@ let { encode, toWords } = bech32m; - let { events, user, subject, src, rates, text } = data; + let { + events, + user, + subject, + src, + rates, + text, + count, + follows, + followers, + followList, + } = data; let { currency, npub, username: n, display } = subject; $: refresh(data); @@ -30,8 +41,7 @@ $: profile = `${$page.url.host}/${subject.anon ? npub : stripped}`; let follow = async () => { - user.follows.push(subject.pubkey); - user.follows = user.follows; + followList = [...followList, subject.pubkey]; let tags = await get(`/api/${user.pubkey}/follows?tagsonly=true`); tags.push(["p", subject.pubkey]); await update(tags); @@ -39,11 +49,11 @@ }; let unfollow = async () => { - user.follows.splice( - user.follows.findIndex((t) => t[1] === subject.pubkey), + followList.splice( + followList.findIndex((t) => t[1] === subject.pubkey), 1 ); - user.follows = user.follows; + followList = followList; let tags = await get(`/api/${user.pubkey}/follows?tagsonly=true`); tags.splice( tags.findIndex((t) => t[1] === subject.pubkey), @@ -71,7 +81,10 @@ } }; - $: following = !!user?.follows.find((t) => t.includes(subject.pubkey)); + let following; + followList.then( + (l) => (following = l.some((t) => t.includes(subject.pubkey))) + ); let showBio; let toggleBio = () => (showBio = !showBio); @@ -127,13 +140,13 @@ <div> <div class="flex justify-center gap-2"> <a href={`/${subject.pubkey}/follows`} data-sveltekit-preload-data="tap" - ><b>{si(subject.follows.length)}</b> + ><b>{#await follows then f}{si(f.length)}{/await}</b> <span class="text-secondary">{$t("user.following")}</span></a > <a href={`/${subject.pubkey}/followers`} data-sveltekit-preload-data="tap" - ><b>{si(subject.count)}</b> + ><b>{#await count then c}{si(c)}{/await}</b> <span class="text-secondary">{$t("user.followers")}</span></a > </div> diff --git a/src/routes/(app)/[username]/(profile)/follows/+page.svelte b/src/routes/(app)/[username]/(profile)/follows/+page.svelte index 0281add9..b1975544 100644 --- a/src/routes/(app)/[username]/(profile)/follows/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/follows/+page.svelte @@ -8,22 +8,12 @@ export let data; - let { - subject: { follows }, - } = data; - + let { follows } = data; $: refresh(data); - let refresh = (data) => { - ({ - subject: { follows }, - } = data); - }; + let refresh = (data) => ({ follows } = data); - let w; </script> -<svelte:window bind:innerWidth={w} /> - <div class="px-3 md:px-0 w-full md:w-[400px] mx-auto"> <h1 class="px-3 md:px-0 text-center text-3xl md:text-4xl font-semibold"> {$t("user.following")} @@ -33,10 +23,7 @@ {#if browser} <VirtualScroll data={follows} key="pubkey" let:data pageMode={true}> <a href={`/${data.pubkey}`} data-sveltekit-preload-data="tap"> - <div - class="flex py-4 text-lg text-secondary" - :key={data.pubkey} - > + <div class="flex py-4 text-lg text-secondary" :key={data.pubkey}> <div class="mb-auto mr-2"> <div class="md:hidden"> <Avatar size={12} user={data} disabled={true} /> |
