aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/routes/(app)/[username]/(profile)/+layout.svelte46
-rw-r--r--src/routes/(app)/[username]/(profile)/followers/+page.server.js10
-rw-r--r--src/routes/(app)/[username]/(profile)/followers/+page.svelte14
-rw-r--r--src/routes/(app)/[username]/(profile)/follows/+page.server.js8
-rw-r--r--src/routes/(app)/[username]/(profile)/follows/+page.svelte20
-rw-r--r--src/routes/(app)/logout/+page.server.ts3
-rw-r--r--src/routes/(app)/settings/+layout.svelte4
-rw-r--r--src/routes/(app)/settings/nostr/+page.svelte1
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();