update splash screen
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
// inspire by: https://github.com/nostr-dev-kit/ndk-react/
|
||||
import NDK from '@nostr-dev-kit/ndk';
|
||||
import { ndkAdapter } from '@nostr-fetch/adapter-ndk';
|
||||
import { fetch } from '@tauri-apps/plugin-http';
|
||||
import { NostrFetcher } from 'nostr-fetch';
|
||||
import { useEffect, useMemo, useState } from 'react';
|
||||
|
||||
@@ -15,18 +16,52 @@ export const NDKInstance = () => {
|
||||
|
||||
const cacheAdapter = useMemo(() => new TauriAdapter(), []);
|
||||
const fetcher = useMemo<NostrFetcher>(
|
||||
() => NostrFetcher.withCustomPool(ndkAdapter(ndk)),
|
||||
() => (ndk ? NostrFetcher.withCustomPool(ndkAdapter(ndk)) : undefined),
|
||||
[ndk]
|
||||
);
|
||||
|
||||
// TODO: fully support NIP-11
|
||||
async function verifyRelays(relays: string[]) {
|
||||
const verifiedRelays: string[] = [];
|
||||
|
||||
for (const relay of relays) {
|
||||
let url: string;
|
||||
|
||||
if (relay.startsWith('ws')) {
|
||||
url = relay.replace('ws', 'http');
|
||||
}
|
||||
|
||||
if (relay.startsWith('wss')) {
|
||||
url = relay.replace('wss', 'https');
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await fetch(url, {
|
||||
method: 'GET',
|
||||
headers: { Accept: 'application/nostr+json' },
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
const data = await res.json();
|
||||
console.log('relay information: ', data);
|
||||
verifiedRelays.push(relay);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('fetch error', e);
|
||||
}
|
||||
}
|
||||
|
||||
return verifiedRelays;
|
||||
}
|
||||
|
||||
async function initNDK() {
|
||||
let explicitRelayUrls: string[];
|
||||
const explicitRelayUrlsFromDB = await getExplicitRelayUrls();
|
||||
|
||||
if (explicitRelayUrlsFromDB) {
|
||||
explicitRelayUrls = explicitRelayUrlsFromDB;
|
||||
explicitRelayUrls = await verifyRelays(explicitRelayUrlsFromDB);
|
||||
} else {
|
||||
explicitRelayUrls = FULL_RELAYS;
|
||||
explicitRelayUrls = await verifyRelays(FULL_RELAYS);
|
||||
}
|
||||
|
||||
const instance = new NDK({ explicitRelayUrls, cacheAdapter });
|
||||
@@ -34,7 +69,7 @@ export const NDKInstance = () => {
|
||||
try {
|
||||
await instance.connect();
|
||||
} catch (error) {
|
||||
console.error('NDK instance init failed: ', error);
|
||||
throw new Error('NDK instance init failed: ', error);
|
||||
}
|
||||
|
||||
setNDK(instance);
|
||||
|
||||
@@ -20,18 +20,17 @@ const NDKContext = createContext<NDKContext>({
|
||||
const NDKProvider = ({ children }: PropsWithChildren<object>) => {
|
||||
const { ndk, relayUrls, fetcher } = NDKInstance();
|
||||
|
||||
if (ndk)
|
||||
return (
|
||||
<NDKContext.Provider
|
||||
value={{
|
||||
ndk,
|
||||
relayUrls,
|
||||
fetcher,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</NDKContext.Provider>
|
||||
);
|
||||
return (
|
||||
<NDKContext.Provider
|
||||
value={{
|
||||
ndk,
|
||||
relayUrls,
|
||||
fetcher,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</NDKContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
const useNDK = () => {
|
||||
|
||||
Reference in New Issue
Block a user