add ndk cache tauri
This commit is contained in:
@@ -3,14 +3,12 @@ import { useQuery } from '@tanstack/react-query';
|
||||
import { AddressPointer } from 'nostr-tools/lib/types/nip19';
|
||||
|
||||
import { useNDK } from '@libs/ndk/provider';
|
||||
import { useStorage } from '@libs/storage/provider';
|
||||
|
||||
export function useEvent(
|
||||
id: undefined | string,
|
||||
naddr?: undefined | AddressPointer,
|
||||
embed?: undefined | string
|
||||
) {
|
||||
const { db } = useStorage();
|
||||
const { ndk } = useNDK();
|
||||
const { status, data } = useQuery({
|
||||
queryKey: ['event', id],
|
||||
@@ -33,20 +31,16 @@ export function useEvent(
|
||||
return event;
|
||||
}
|
||||
|
||||
// get event from db
|
||||
const dbEvent = await db.getEventByID(id);
|
||||
if (dbEvent) return dbEvent;
|
||||
|
||||
// get event from relay if event in db not present
|
||||
// get event from relay
|
||||
const event = await ndk.fetchEvent(id);
|
||||
if (!event) return Promise.reject(new Error('event not found'));
|
||||
|
||||
await db.createEvent(event);
|
||||
|
||||
return event;
|
||||
},
|
||||
enabled: !!ndk,
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnMount: false,
|
||||
refetchOnReconnect: false,
|
||||
staleTime: Infinity,
|
||||
});
|
||||
|
||||
return { status, data };
|
||||
|
||||
@@ -186,10 +186,9 @@ export function useNostr() {
|
||||
{ since: since }
|
||||
)) as unknown as NDKEvent[];
|
||||
|
||||
return { status: 'ok', message: 'fetch completed', data: events };
|
||||
return events;
|
||||
} catch (e) {
|
||||
console.error('prefetch events failed, error: ', e);
|
||||
return { status: 'failed', message: e };
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -22,12 +22,10 @@ export function useProfile(pubkey: string, embed?: string) {
|
||||
|
||||
return await user.fetchProfile();
|
||||
},
|
||||
enabled: !!ndk,
|
||||
staleTime: Infinity,
|
||||
refetchOnMount: false,
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
retry: 2,
|
||||
});
|
||||
|
||||
return { status, user, error };
|
||||
|
||||
24
src/utils/types.d.ts
vendored
24
src/utils/types.d.ts
vendored
@@ -115,3 +115,27 @@ export interface Resources {
|
||||
title: string;
|
||||
data: Array<Resource>;
|
||||
}
|
||||
|
||||
export interface NDKCacheUser {
|
||||
pubkey: string;
|
||||
profile: string | NDKUserProfile;
|
||||
createdAt: number;
|
||||
}
|
||||
|
||||
export interface NDKCacheEvent {
|
||||
id: string;
|
||||
pubkey: string;
|
||||
content: string;
|
||||
kind: number;
|
||||
createdAt: number;
|
||||
relay: string;
|
||||
event: string;
|
||||
}
|
||||
|
||||
export interface NDKCacheEventTag {
|
||||
id: string;
|
||||
eventId: string;
|
||||
tag: string;
|
||||
value: string;
|
||||
tagValue: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user