diff options
| author | Adam Soltys <[email protected]> | 2025-01-14 15:59:23 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2025-01-14 15:59:23 -0800 |
| commit | e7720ad5fc760a045e25f4e5fe1e089d22d90eb7 (patch) | |
| tree | 143eb8427d0d50df5b6f7ea7ccdd8e70116b66df | |
| parent | 033924c7e75361ff77a7a0fdde75a8f4057a968a (diff) | |
| download | coinos-ui-e7720ad5fc760a045e25f4e5fe1e089d22d90eb7.tar.gz coinos-ui-e7720ad5fc760a045e25f4e5fe1e089d22d90eb7.zip | |
refactor follows
8 files changed, 62 insertions, 44 deletions
diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index a5f336e7..0fc16ead 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -41,12 +41,11 @@ let list = $state([]); let follow = async () => { list = [...list, subject.pubkey]; - let tags = await get( + let pubkeys = await get( `/api/${user.pubkey}/follows?pubkeysOnly=true&nocache=true`, ); - tags.push(["p", subject.pubkey]); - await update(tags); - invalidate("app:user"); + pubkeys.push(subject.pubkey); + await update(pubkeys); }; let unfollow = async () => { @@ -55,17 +54,14 @@ 1, ); list = list; - let tags = await get( + let pubkeys = await get( `/api/${user.pubkey}/follows?pubkeysOnly=true&nocache=true`, ); - tags.splice( - tags.findIndex((t) => t[1] === subject.pubkey), - 1, - ); - await update(tags); + pubkeys.splice(pubkeys.indexOf(subject.pubkey), 1); + await update(pubkeys); }; - let update = async (tags) => { + let update = async (pubkeys) => { if (!browser) return; let event = { @@ -73,12 +69,13 @@ created_at: Math.floor(Date.now() / 1000), kind: 3, content: "", - tags, + tags: pubkeys.map((p) => ["p", p]), }; try { - await sign(event); - await send(event); + let signed = await sign(event); + send(signed); + invalidate("app:user"); } catch (e) { console.log(e); } @@ -215,6 +212,27 @@ <div class="text-secondary">{$t("user.nostrPubkey")}</div> <div class="flex gap-4"> <div class="break-all grow text-xl"> + {subject.pubkey} + </div> + <div class="flex my-auto gap-1"> + <button class="my-auto" onclick={() => copy(subject.pubkey)} + ><iconify-icon noobserver icon="ph:copy-bold" width="32" + ></iconify-icon></button + > + <a + href={`/qr/${encodeURIComponent(subject.pubkey)}`} + class="my-auto" + > + <iconify-icon noobserver icon="ph:qr-code-bold" width="32" + ></iconify-icon> + </a> + </div> + </div> + </div> + <div> + <div class="text-secondary">{$t("user.nostrPubkey")}</div> + <div class="flex gap-4"> + <div class="break-all grow text-xl"> {npub} </div> <div class="flex my-auto gap-1"> diff --git a/src/routes/(app)/[username]/(profile)/followers/+page.server.js b/src/routes/(app)/[username]/(profile)/followers/+page.server.js index c7d9d67b..309d4707 100644 --- a/src/routes/(app)/[username]/(profile)/followers/+page.server.js +++ b/src/routes/(app)/[username]/(profile)/followers/+page.server.js @@ -1,8 +1,10 @@ import { get } from "$lib/utils"; export async function load({ depends, parent }) { - depends("app:user"); - let { subject } = await parent(); - let followers = get(`/${subject.pubkey}/followers`).catch(() => []); - return { followers }; + depends("app:user"); + const { subject } = await parent(); + console.log("GETTING FOLLOWERS", subject.username); + const followers = await get(`/${subject.pubkey}/followers`); + console.log("FOLLOWERS", followers.length); + return { followers }; } diff --git a/src/routes/(app)/[username]/(profile)/followers/+page.svelte b/src/routes/(app)/[username]/(profile)/followers/+page.svelte index b7ad4948..62f05a0a 100644 --- a/src/routes/(app)/[username]/(profile)/followers/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/followers/+page.svelte @@ -5,7 +5,7 @@ import VirtualScroll from "svelte-virtual-scroll-list"; let { data } = $props(); - let { followers } = data; + let { followers } = $derived(data); </script> <div class="px-3 md:px-0 w-full md:w-[400px] mx-auto space-y-5"> @@ -17,9 +17,9 @@ <div>Loading followers...</div> {:then followers} {#if followers.length} - <VirtualScroll data={followers} key="pubkey" pageMode={true}> + <VirtualScroll data={followers} key="pubkey" pageMode={true}> {#snippet children({ data })} - <a + <a href={`/${data.pubkey}`} data-sveltekit-preload-data="tap" rel="nofollow" @@ -39,14 +39,14 @@ <div class="w-full flex pb-1 text-black my-auto"> <div> - <div>{data.display_name || ""}</div> - <div class="text-secondary text-lg">@{data.name}</div> + <div>{data.display || ""}</div> + <div class="text-secondary text-lg">@{data.username}</div> </div> </div> </div> </a> - {/snippet} - </VirtualScroll> + {/snippet} + </VirtualScroll> {:else} <div>No followers</div> {/if} diff --git a/src/routes/(app)/[username]/(profile)/follows/+page.server.js b/src/routes/(app)/[username]/(profile)/follows/+page.server.js index 2a98b316..9fbe37a3 100644 --- a/src/routes/(app)/[username]/(profile)/follows/+page.server.js +++ b/src/routes/(app)/[username]/(profile)/follows/+page.server.js @@ -1,8 +1,8 @@ import { get } from "$lib/utils"; export async function load({ depends, parent }) { - depends("app:user"); - let { subject } = await parent(); - let follows = get(`/${subject.pubkey}/follows`).catch(() => []); - return { follows }; + depends("app:user"); + const { subject } = await parent(); + const follows = get(`/${subject.pubkey}/follows`).catch(() => []); + return { follows }; } diff --git a/src/routes/(app)/[username]/(profile)/follows/+page.svelte b/src/routes/(app)/[username]/(profile)/follows/+page.svelte index ad416500..4e70686a 100644 --- a/src/routes/(app)/[username]/(profile)/follows/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/follows/+page.svelte @@ -1,6 +1,4 @@ <script> - import { run } from 'svelte/legacy'; - import { onMount } from "svelte"; import { t } from "$lib/translations"; import Avatar from "$comp/Avatar.svelte"; @@ -9,11 +7,7 @@ import { invalidate } from "$app/navigation"; let { data } = $props(); - let { follows } = $state(data); - let refresh = (data) => ({ follows } = data); - run(() => { - refresh(data); - }); + let { follows } = $derived(data); </script> <div class="px-3 md:px-0 w-full md:w-[400px] mx-auto"> @@ -26,9 +20,9 @@ {:then follows} {#if follows.length} {#if browser} - <VirtualScroll data={follows} key="pubkey" pageMode={true}> + <VirtualScroll data={follows} key="pubkey" pageMode={true}> {#snippet children({ data })} - <a + <a href={`/${data.pubkey}`} data-sveltekit-preload-data="tap" rel="nofollow" @@ -45,14 +39,14 @@ <div class="w-full flex pb-1 text-black my-auto"> <div> - <div>{data.display_name || ""}</div> - <div class="text-secondary text-base">@{data.name}</div> + <div>{data.display || ""}</div> + <div class="text-secondary text-base">@{data.username}</div> </div> </div> </div> </a> - {/snippet} - </VirtualScroll> + {/snippet} + </VirtualScroll> {/if} {:else} <div>No follows</div> diff --git a/src/routes/(app)/logout/+page.server.ts b/src/routes/(app)/logout/+page.server.ts index 87ddbb59..1ecc7f87 100644 --- a/src/routes/(app)/logout/+page.server.ts +++ b/src/routes/(app)/logout/+page.server.ts @@ -12,5 +12,8 @@ export async function load({ cookies }) { cookies.set("username", "", opts); cookies.set("token", "", opts); cookies.set("pin", "", opts); + cookies.set("sk", "", opts); + cookies.set("theme", "", opts); + cookies.set("sid", "", opts); redirect(307, `/login?lang=${lang}`); } diff --git a/src/routes/(app)/settings/+layout.svelte b/src/routes/(app)/settings/+layout.svelte index c6cc81c4..a7ff09d0 100644 --- a/src/routes/(app)/settings/+layout.svelte +++ b/src/routes/(app)/settings/+layout.svelte @@ -12,7 +12,7 @@ import { avatar, banner, signer, password, pin, save } from "$lib/store"; import { upload } from "$lib/upload"; import { page } from "$app/stores"; - import { sign, send, setNsec } from "$lib/nostr"; + import { sign, send } from "$lib/nostr"; import { invalidateAll } from "$app/navigation"; let { children, data, form } = $props(); @@ -119,7 +119,7 @@ }; try { - await sign(event); + event = await sign(event); await send(event); } catch (e) { console.log(e); diff --git a/src/routes/(app)/settings/nostr/+page.svelte b/src/routes/(app)/settings/nostr/+page.svelte index c5ced9aa..20c18c6f 100644 --- a/src/routes/(app)/settings/nostr/+page.svelte +++ b/src/routes/(app)/settings/nostr/+page.svelte @@ -41,6 +41,7 @@ let extension = $state(); let getPubkey = async () => { + $signer = { method: "extension", ready: true }; extension = true; npub = await window.nostr.getPublicKey(); await tick(); |
