9 changed files with 97 additions and 74 deletions
@ -1,2 +1,4 @@ |
|||||||
export const wikiKind = 30818; |
export const wikiKind = 30818; |
||||||
export const standardRelays = ["wss://nostr.thesamecat.io"]; |
export const indexKind = 30040; |
||||||
|
export const zettelKind = 30041; |
||||||
|
export const standardRelays = [ "wss://thecitadel.nostr1.com" ]; |
||||||
|
|||||||
@ -1,44 +1,53 @@ |
|||||||
<script lang="ts"> |
<script lang="ts"> |
||||||
import ArticleHeader from "$lib/ArticleHeader.svelte"; |
import ArticleHeader from "$lib/ArticleHeader.svelte"; |
||||||
import { ndk, signedIn } from "$lib/ndk"; |
import { indexKind } from "$lib/consts"; |
||||||
import { NDKRelaySet, type NDKUser } from "@nostr-dev-kit/ndk"; |
import { ndk } from "$lib/ndk"; |
||||||
const kind = 30040; |
import { NDKEvent, NDKRelayList, NDKRelaySet, type NDKUser } from "@nostr-dev-kit/ndk"; |
||||||
const count: number = 10; |
|
||||||
|
|
||||||
async function loadEvents(user?: NDKUser) { |
const getEvents = (): Promise<Set<NDKEvent>> => |
||||||
if (user == null) { |
$ndk.fetchEvents( |
||||||
return $ndk.fetchEvents( |
// @ts-ignore |
||||||
{ kinds: [kind] }, |
{ kinds: [indexKind] }, |
||||||
{ closeOnEose: true } |
|
||||||
); |
); |
||||||
} |
|
||||||
|
|
||||||
const relays = await user.relayList(); |
const getEventsFromUserRelays = (userRelays: NDKRelayList): Promise<Set<NDKEvent>> => { |
||||||
const relaySet = NDKRelaySet.fromRelayUrls(relays!.readRelayUrls, $ndk); |
const relaySet = NDKRelaySet.fromRelayUrls(userRelays!.readRelayUrls, $ndk); |
||||||
|
|
||||||
// TODO: Add more filter parameters to customize the event feed. |
// TODO: Add more filter parameters to customize the event feed. |
||||||
return $ndk.fetchEvents( |
return $ndk.fetchEvents( |
||||||
{ authors: [user.pubkey, ], kinds: [kind] }, |
// @ts-ignore |
||||||
{ closeOnEose: true }, |
{ kinds: [indexKind] }, |
||||||
relaySet, |
relaySet, |
||||||
); |
); |
||||||
} |
}; |
||||||
|
|
||||||
$: eventList = loadEvents($ndk.activeUser); |
let user: NDKUser | null | undefined; |
||||||
|
let readRelays: NDKRelayList | null | undefined; |
||||||
|
|
||||||
signedIn.subscribe(async isSignedIn => { |
$: { |
||||||
if (isSignedIn) { |
user = $ndk.activeUser; |
||||||
eventList = loadEvents(); |
user?.relayList().then(relays => readRelays = relays); |
||||||
} |
} |
||||||
}); |
|
||||||
</script> |
</script> |
||||||
|
|
||||||
<div class='leather flex flex-col flex-grow-0 space-y-4 overflow-y-auto w-max'> |
<div class='leather flex flex-col flex-grow-0 space-y-4 overflow-y-auto w-max'> |
||||||
{#await eventList} |
{#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> |
<p>Loading...</p> |
||||||
{:then events} |
{:then events} |
||||||
{#each Array.from(events) as event} |
{#each Array.from(events) as event} |
||||||
<ArticleHeader {event} /> |
<ArticleHeader {event} /> |
||||||
{/each} |
{/each} |
||||||
{/await} |
{/await} |
||||||
|
{/if} |
||||||
|
{/key} |
||||||
</div> |
</div> |
||||||
|
|||||||
Loading…
Reference in new issue