aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/Article.svelte17
-rw-r--r--src/lib/components/Login.svelte21
-rw-r--r--src/lib/consts.ts2
-rw-r--r--src/lib/ndk.ts10
-rw-r--r--src/routes/+page.svelte66
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>