diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/Article.svelte | 17 | ||||
-rw-r--r-- | src/lib/components/Login.svelte | 21 | ||||
-rw-r--r-- | src/lib/consts.ts | 2 | ||||
-rw-r--r-- | src/lib/ndk.ts | 10 | ||||
-rw-r--r-- | src/routes/+page.svelte | 66 |
5 files changed, 75 insertions, 41 deletions
diff --git a/src/lib/Article.svelte b/src/lib/Article.svelte index 96213e6..caa28ed 100644 --- a/src/lib/Article.svelte +++ b/src/lib/Article.svelte @@ -18,11 +18,18 @@ } const eventIds = index!.getMatchingTags('e').map((value) => value[1]); - const events = await $ndk.fetchEvents({ - // @ts-ignore - kinds: zettelKinds, - ids: eventIds, - }); + const events = await $ndk.fetchEvents( + { + // @ts-ignore + kinds: zettelKinds, + ids: eventIds, + }, + { + groupable: false, + skipVerification: false, + skipValidation: false + } + ); console.debug(`Fetched ${events.size} events from ${eventIds.length} references.`); return events; diff --git a/src/lib/components/Login.svelte b/src/lib/components/Login.svelte index c5df8a9..6ce939e 100644 --- a/src/lib/components/Login.svelte +++ b/src/lib/components/Login.svelte @@ -1,9 +1,18 @@ <script lang='ts'> import { Avatar, Button, Popover } from 'flowbite-svelte'; - import NDK, { NDKNip07Signer, type NDKUserProfile } from '@nostr-dev-kit/ndk'; + import { NDKNip07Signer, type NDKUserProfile } from '@nostr-dev-kit/ndk'; import { signedIn, ndk } from '$lib/ndk'; let profile: NDKUserProfile | null = null; + let pfp: string | undefined = undefined; + let username: string | undefined = undefined; + let tag: string | undefined = undefined; + + $: { + pfp = profile?.image; + username = profile?.name; + tag = profile?.name; + } const signInWithExtension = async () => { const signer = new NDKNip07Signer(); @@ -14,7 +23,7 @@ $ndk.activeUser = user; await $ndk.connect(); - profile = await user.fetchProfile(); + profile = await $ndk.activeUser?.fetchProfile(); console.debug('NDK signed in with extension and reconnected.'); @@ -30,16 +39,16 @@ <Avatar rounded class='h-6 w-6 m-4 cursor-pointer' - src={profile?.image} - alt={profile?.displayName} + src={pfp} + alt={username} /> <Popover class='popover-leather w-fit' placement='bottom' target='avatar' > - <h3 class='text-lg font-bold'>{profile?.displayName}</h3> - <h4 class='text-base'>@{profile?.name}</h4> + <h3 class='text-lg font-bold'>{username}</h3> + <h4 class='text-base'>@{tag}</h4> </Popover> {:else} <Avatar rounded class='h-6 w-6 m-4 cursor-pointer' id='avatar' /> diff --git a/src/lib/consts.ts b/src/lib/consts.ts index 26f8911..fbe3477 100644 --- a/src/lib/consts.ts +++ b/src/lib/consts.ts @@ -1,7 +1,7 @@ export const wikiKind = 30818; export const indexKind = 30040; export const zettelKinds = [ 1, 30024, 30041, 30818]; -export const standardRelays = [ "wss://thecitadel.nostr1.com" ]; +export const standardRelays = [ "wss://thecitadel.nostr1.com", "wss://relay.noswhere.com" ]; export enum FeedType { Relays, diff --git a/src/lib/ndk.ts b/src/lib/ndk.ts index ac03a65..3ac1b3b 100644 --- a/src/lib/ndk.ts +++ b/src/lib/ndk.ts @@ -9,17 +9,19 @@ export function getStoredNdkConfig() { (browser && localStorage.getItem('alexandria_relays')) || JSON.stringify(standardRelays) ); - const dexieAdapter = new NDKCacheAdapterDexie({ dbName: 'alexandria-ndk-cache-db' }); + // const dexieAdapter = new NDKCacheAdapterDexie({ dbName: 'alexandria-ndk-cache-db' }); - return { relays, dexieAdapter }; + return { + relays, + // dexieAdapter, + }; } export function getNdkInstance() { - const { relays, dexieAdapter } = getStoredNdkConfig(); + const { relays } = getStoredNdkConfig(); const ndk = new NDK({ autoConnectUserRelays: true, - cacheAdapter: dexieAdapter, enableOutboxModel: true, explicitRelayUrls: relays, }); diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 852021b..2cef62f 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,39 +1,55 @@ <script lang="ts"> import ArticleHeader from "$lib/ArticleHeader.svelte"; - import { FeedType, indexKind } from "$lib/consts"; + import { FeedType, indexKind, standardRelays } from "$lib/consts"; import { ndk } from "$lib/ndk"; import { filterValidIndexEvents } from "$lib/utils"; - import { NDKEvent, NDKRelayList, NDKRelaySet, type NDKUser } from "@nostr-dev-kit/ndk"; + import { NDKEvent, NDKRelaySet, type NDKUser } from "@nostr-dev-kit/ndk"; import { Button, Dropdown, Radio, Skeleton } from "flowbite-svelte"; import { ChevronDownOutline } from "flowbite-svelte-icons"; const getEvents = (): Promise<Set<NDKEvent>> => // @ts-ignore - $ndk.fetchEvents({ kinds: [indexKind] }).then(filterValidIndexEvents); - - const getEventsFromUserRelays = (userRelays: NDKRelayList): Promise<Set<NDKEvent>> => { - const relaySet = NDKRelaySet.fromRelayUrls(userRelays!.readRelayUrls, $ndk); - - return $ndk.fetchEvents( - // @ts-ignore + $ndk.fetchEvents( { kinds: [indexKind] }, - relaySet, - ).then(filterValidIndexEvents); - }; - - const getEventsFromUserFollows = (follows: Set<NDKUser>, userRelays: NDKRelayList): Promise<Set<NDKEvent>> => { - const relaySet = NDKRelaySet.fromRelayUrls(userRelays?.readRelayUrls ?? [], $ndk); - const pubkeys = Array.from(follows ?? []).map(user => user.pubkey); - - return $ndk.fetchEvents( { - authors: pubkeys, - // @ts-ignore - kinds: [indexKind] + groupable: true, + skipVerification: false, + skipValidation: false }, - relaySet, + NDKRelaySet.fromRelayUrls(standardRelays, $ndk) ).then(filterValidIndexEvents); - }; + + const getEventsFromUserRelays = (userRelays: string[]): Promise<Set<NDKEvent>> => { + return $ndk + .fetchEvents( + // @ts-ignore + { kinds: [indexKind] }, + { + closeOnEose: true, + groupable: true, + skipVerification: false, + skipValidation: false, + }, + ) + .then(filterValidIndexEvents); + } + + const getEventsFromUserFollows = (follows: Set<NDKUser>, userRelays?: string[]): Promise<Set<NDKEvent>> => { + return $ndk + .fetchEvents( + { + authors: Array.from(follows ?? []).map(user => user.pubkey), + // @ts-ignore + kinds: [indexKind] + }, + { + groupable: true, + skipVerification: false, + skipValidation: false + }, + ) + .then(filterValidIndexEvents); + } const getFeedTypeFriendlyName = (feedType: FeedType): string => { switch (feedType) { @@ -60,13 +76,13 @@ } let user: NDKUser | null | undefined; - let readRelays: NDKRelayList | null | undefined; + let readRelays: string[] | null | undefined; let userFollows: Set<NDKUser> | null | undefined; let feedType: FeedType = FeedType.Relays; $: { user = $ndk.activeUser; - user?.relayList().then(relays => readRelays = relays); + readRelays = user?.relayUrls; user?.follows().then(follows => userFollows = follows); } </script> |