aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/components/Login.svelte14
-rw-r--r--src/lib/ndk.ts2
-rw-r--r--src/routes/+page.svelte35
3 files changed, 35 insertions, 16 deletions
diff --git a/src/lib/components/Login.svelte b/src/lib/components/Login.svelte
index 0e52e9c..0ceefe7 100644
--- a/src/lib/components/Login.svelte
+++ b/src/lib/components/Login.svelte
@@ -1,9 +1,8 @@
<script lang='ts'>
import { Avatar, Button, Popover } from 'flowbite-svelte';
import NDK, { NDKNip07Signer, type NDKUserProfile } from '@nostr-dev-kit/ndk';
- import { ndk } from '$lib/ndk';
+ import { signedIn, ndk } from '$lib/ndk';
- let signedIn: boolean = false;
let profile: NDKUserProfile | null = null;
const signInWithExtension = async () => {
@@ -14,15 +13,12 @@
$ndk.signer = signer;
$ndk.activeUser = user;
- const connectPromise = $ndk.connect();
- const fetchProfilePromise = user.fetchProfile();
-
- const [_, extensionUserProfile] = await Promise.all([connectPromise, fetchProfilePromise]);
- profile = extensionUserProfile;
+ await $ndk.connect();
+ profile = await user.fetchProfile();
console.log('NDK signed in with extension and reconnected.');
- signedIn = true;
+ $signedIn = true;
};
const signInWithBunker = () => {
@@ -30,7 +26,7 @@
};
</script>
-{#if signedIn}
+{#if $signedIn}
<Avatar
rounded
class='h-6 w-6 m-4 cursor-pointer'
diff --git a/src/lib/ndk.ts b/src/lib/ndk.ts
index 036db26..745ae4e 100644
--- a/src/lib/ndk.ts
+++ b/src/lib/ndk.ts
@@ -29,3 +29,5 @@ export function getNdkInstance() {
}
export const ndk: Writable<NDK> = writable(getNdkInstance());
+
+export const signedIn: Writable<boolean> = writable(false);
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index ec7f41a..5852aa5 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -1,19 +1,40 @@
<script lang="ts">
import ArticleHeader from "$lib/ArticleHeader.svelte";
- import { ndk } from "$lib/ndk";
+ import { ndk, signedIn } from "$lib/ndk";
+ import { NDKRelaySet, type NDKUser } from "@nostr-dev-kit/ndk";
const kind = 30040;
const count: number = 10;
- // TODO: Add more filter parameters to customize the event feed.
- async function loadEvents() {
- const eventlist = await $ndk.fetchEvents({ kinds: [kind] });
- return eventlist;
+ async function loadEvents(user?: NDKUser) {
+ if (user == null) {
+ return $ndk.fetchEvents(
+ { kinds: [kind] },
+ { closeOnEose: true }
+ );
+ }
+
+ const relays = await user.relayList();
+ const relaySet = NDKRelaySet.fromRelayUrls(relays!.readRelayUrls, $ndk);
+
+ // TODO: Add more filter parameters to customize the event feed.
+ return $ndk.fetchEvents(
+ { authors: [user.pubkey, ], kinds: [kind] },
+ { closeOnEose: true },
+ relaySet,
+ );
}
- const eventlist = loadEvents();
+
+ $: eventList = loadEvents($ndk.activeUser);
+
+ signedIn.subscribe(async isSignedIn => {
+ if (isSignedIn) {
+ eventList = loadEvents();
+ }
+ });
</script>
<div class='leather flex flex-col flex-grow-0 space-y-4 overflow-y-auto w-max'>
- {#await eventlist}
+ {#await eventList}
<p>Loading...</p>
{:then events}
{#each Array.from(events) as event}