diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/Article.svelte | 24 | ||||
-rw-r--r-- | src/lib/stores.ts | 4 | ||||
-rw-r--r-- | src/routes/d/[tag]/+page.svelte | 2 | ||||
-rw-r--r-- | src/routes/d/[tag]/+page.ts | 10 |
4 files changed, 25 insertions, 15 deletions
diff --git a/src/lib/Article.svelte b/src/lib/Article.svelte index 6d1ad8c..0a17d41 100644 --- a/src/lib/Article.svelte +++ b/src/lib/Article.svelte @@ -1,28 +1,32 @@ <script lang="ts"> import { ndk } from '$lib/ndk'; - import { idList } from '$lib/stores'; import type { NDKEvent } from '@nostr-dev-kit/ndk'; import { page } from '$app/stores'; import { Button, Heading, Sidebar, SidebarGroup, SidebarItem, SidebarWrapper, Skeleton, TextPlaceholder, Tooltip } from 'flowbite-svelte'; import showdown from 'showdown'; import { onMount } from 'svelte'; import { BookOutline } from 'flowbite-svelte-icons'; + import { alexandriaKinds } from './stores'; - export let event: NDKEvent | null; - - $: activeHash = $page.url.hash; + export let event: NDKEvent | null | undefined; - async function getEvents(): Promise<NDKEvent[]> { - if (event == null) { + async function getEvents(index?: NDKEvent | null | undefined): Promise<IterableIterator<NDKEvent>> { + if (index == null) { // TODO: Add error handling. } - const eventPromises = await $ndk.fetchEvents(event!.filter()); - const events = await Promise.all(eventPromises); + const eventSet = await $ndk.fetchEvents({ + kinds: $alexandriaKinds, + ids: index!.getMatchingTags('e').map((value) => value[1]), + }); - return events.filter((event) => event != null); + return eventSet.values(); } + $: eventPromises = getEvents(event); + + $: activeHash = $page.url.hash; + function normalizeHashPath(str: string): string { return str .toLowerCase() @@ -96,7 +100,7 @@ const converter = new showdown.Converter(); </script> -{#await getEvents()} +{#await eventPromises} <Sidebar class='sidebar-leather fixed top-20 left-0 px-4 w-60'> <SidebarWrapper> <Skeleton/> diff --git a/src/lib/stores.ts b/src/lib/stores.ts index b95d9c5..6a36ea4 100644 --- a/src/lib/stores.ts +++ b/src/lib/stores.ts @@ -1,6 +1,8 @@ -import { writable } from "svelte/store"; +import { readable, writable } from "svelte/store"; export let idList = writable<string[]>([]); +export let alexandriaKinds = readable<number[]>([30040, 30041]); + export const isLeftMenuMenuInUse = writable(false); export const showLeftMenu = writable(false); diff --git a/src/routes/d/[tag]/+page.svelte b/src/routes/d/[tag]/+page.svelte index 8cc6d68..120e3f9 100644 --- a/src/routes/d/[tag]/+page.svelte +++ b/src/routes/d/[tag]/+page.svelte @@ -4,7 +4,7 @@ export let data: PageData; - let { event } = data; + $: ({ event } = data); </script> <main> diff --git a/src/routes/d/[tag]/+page.ts b/src/routes/d/[tag]/+page.ts index 7d40f53..a9181ef 100644 --- a/src/routes/d/[tag]/+page.ts +++ b/src/routes/d/[tag]/+page.ts @@ -1,12 +1,13 @@ import { getNdkInstance } from "$lib/ndk"; -import type { NDKEvent } from "@nostr-dev-kit/ndk"; +import type { NDKEvent, NDKKind } from "@nostr-dev-kit/ndk"; import { error } from "@sveltejs/kit"; +import type { PageLoad } from "./$types"; // MichaelJ - 23 July 2024 - Disable server-side rendering so that the load function can use the // browser's local storage to retrieve saved relays and the cache adapter for the NDK instance. export const ssr = false; -export const load = async ({ params }) => { +export const load: PageLoad = async ({ params }) => { const ndk = getNdkInstance(); const { tag } = params; @@ -14,7 +15,10 @@ export const load = async ({ params }) => { let event: NDKEvent | null | undefined; try { - events = await ndk.fetchEvents({ '#d': [tag] }); + events = await ndk.fetchEvents({ + kinds: [30040 as NDKKind], + '#d': [tag], + }); event = events.values().next().value; } catch (err) { console.error(err); |