diff options
author | buttercat1791 <mjjurkoic@gmail.com> | 2024-08-20 23:31:22 -0500 |
---|---|---|
committer | limina1 <liminal@duck.com> | 2024-08-27 08:22:01 -0400 |
commit | b4f5d22c1709588ba8843a6a6f68b097c1d13827 (patch) | |
tree | 9c0a8ab7e00499eead4c6d9cfafe1fc98d373625 /src/routes | |
parent | 83b8f1c9d62390cbb01ed25b6a7ff5b8c494022c (diff) |
Improve home feed refresh
Diffstat (limited to 'src/routes')
-rw-r--r-- | src/routes/+page.svelte | 69 |
1 files changed, 39 insertions, 30 deletions
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5852aa5..7e0e6e6 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,44 +1,53 @@ <script lang="ts"> import ArticleHeader from "$lib/ArticleHeader.svelte"; - import { ndk, signedIn } from "$lib/ndk"; - import { NDKRelaySet, type NDKUser } from "@nostr-dev-kit/ndk"; - const kind = 30040; - const count: number = 10; + import { indexKind } from "$lib/consts"; + import { ndk } from "$lib/ndk"; + import { NDKEvent, NDKRelayList, NDKRelaySet, type NDKUser } from "@nostr-dev-kit/ndk"; - async function loadEvents(user?: NDKUser) { - if (user == null) { - return $ndk.fetchEvents( - { kinds: [kind] }, - { closeOnEose: true } - ); - } + const getEvents = (): Promise<Set<NDKEvent>> => + $ndk.fetchEvents( + // @ts-ignore + { kinds: [indexKind] }, + ); + + const getEventsFromUserRelays = (userRelays: NDKRelayList): Promise<Set<NDKEvent>> => { + const relaySet = NDKRelaySet.fromRelayUrls(userRelays!.readRelayUrls, $ndk); - 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 }, + // @ts-ignore + { kinds: [indexKind] }, relaySet, ); - } + }; - $: eventList = loadEvents($ndk.activeUser); + let user: NDKUser | null | undefined; + let readRelays: NDKRelayList | null | undefined; - signedIn.subscribe(async isSignedIn => { - if (isSignedIn) { - eventList = loadEvents(); - } - }); + $: { + user = $ndk.activeUser; + user?.relayList().then(relays => readRelays = relays); + } </script> <div class='leather flex flex-col flex-grow-0 space-y-4 overflow-y-auto w-max'> - {#await eventList} - <p>Loading...</p> - {:then events} - {#each Array.from(events) as event} - <ArticleHeader {event} /> - {/each} - {/await} + {#key user} + {#if user == null || readRelays == null} + {#await getEvents()} + <p>Loading...</p> + {:then events} + {#each Array.from(events) as event} + <ArticleHeader {event} /> + {/each} + {/await} + {:else} + {#await getEventsFromUserRelays(readRelays)} + <p>Loading...</p> + {:then events} + {#each Array.from(events) as event} + <ArticleHeader {event} /> + {/each} + {/await} + {/if} + {/key} </div> |