aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndk.ts
blob: 745ae4e7a1966a4db7dd42b8453212cdb0093bc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { browser } from '$app/environment';
import NDK, { NDKEvent, NDKNip07Signer } from '@nostr-dev-kit/ndk';
import NDKCacheAdapterDexie from '@nostr-dev-kit/ndk-cache-dexie';
import { writable, type Writable } from 'svelte/store';
import { standardRelays } from './consts';

export function getStoredNdkConfig() {
  const relays = JSON.parse(
    (browser && localStorage.getItem('alexandria_relays')) || JSON.stringify(standardRelays)
  );
  
  const dexieAdapter = new NDKCacheAdapterDexie({ dbName: 'alexandria-ndk-cache-db' });

  return { relays, dexieAdapter };
}

export function getNdkInstance() {
  const { relays, dexieAdapter } = getStoredNdkConfig();

  const ndk = new NDK({
    autoConnectUserRelays: true,
    cacheAdapter: dexieAdapter,
    enableOutboxModel: true,
    explicitRelayUrls: relays,
  });
  ndk.connect().then(() => console.log('ndk connected'));

  return ndk;
}

export const ndk: Writable<NDK> = writable(getNdkInstance());

export const signedIn: Writable<boolean> = writable(false);