add ndk cache tauri

This commit is contained in:
2023-10-29 11:07:05 +07:00
parent ace58ecdd5
commit 0b25a4a04b
12 changed files with 236 additions and 97 deletions

View File

@@ -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 };

View File

@@ -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 };
}
};

View File

@@ -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
View File

@@ -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;
}