import { feedTypeStorageKey } from '$lib/consts'; import { FeedType } from '$lib/consts'; import { getPersistedLogin, initNdk, loginWithExtension, ndkInstance } from '$lib/ndk'; import Pharos, { pharosInstance } from '$lib/parser'; import { feedType } from '$lib/stores'; import type { LayoutLoad } from './$types'; export const ssr = false; export const load: LayoutLoad = () => { const initialFeedType = localStorage.getItem(feedTypeStorageKey) as FeedType ?? FeedType.StandardRelays; feedType.set(initialFeedType); const ndk = initNdk(); ndkInstance.set(ndk); try { // Michael J - 18 Jan 2025 - This will not work server-side, since the NIP-07 extension is only // available in the browser, and the flags for persistent login are saved in the browser's // local storage. If SSR is ever enabled, move this code block to run client-side. const pubkey = getPersistedLogin(); if (pubkey) { // Michael J - 27 Jan 2025 - We don't await this call; it will run in the background and // update Svelte stores to propagate data. loginWithExtension(pubkey); } } catch (e) { console.warn(`Failed to login with extension: ${e}\n\nContinuing with anonymous session.`); } const parser = new Pharos(ndk); pharosInstance.set(parser); return { ndk, parser, }; };