aboutsummaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
authorLibravatar buttercat1791 <mjjurkoic@gmail.com>2024-08-20 23:31:22 -0500
committerLibravatar limina1 <liminal@duck.com>2024-08-27 08:22:01 -0400
commitb4f5d22c1709588ba8843a6a6f68b097c1d13827 (patch)
tree9c0a8ab7e00499eead4c6d9cfafe1fc98d373625 /src/routes
parent83b8f1c9d62390cbb01ed25b6a7ff5b8c494022c (diff)
Improve home feed refresh
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/+page.svelte69
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>