diff options
author | buttercat1791 <mjjurkoic@gmail.com> | 2024-08-20 09:45:16 -0500 |
---|---|---|
committer | limina1 <liminal@duck.com> | 2024-08-27 08:22:01 -0400 |
commit | 83b8f1c9d62390cbb01ed25b6a7ff5b8c494022c (patch) | |
tree | ab1aebcd187edf4b2d4077908f7a2735921fe74b | |
parent | 648a3a2262c45c2a9cb260fc852bd3af0ebe1006 (diff) |
Refresh home feed on sign-in
-rw-r--r-- | src/lib/components/Login.svelte | 14 | ||||
-rw-r--r-- | src/lib/ndk.ts | 2 | ||||
-rw-r--r-- | src/routes/+page.svelte | 35 |
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} |