import { NDKEvent, NDKKind } from '@nostr-dev-kit/ndk'; import { useQuery } from '@tanstack/react-query'; import { useCallback } from 'react'; import { VList } from 'virtua'; import { useNDK } from '@libs/ndk/provider'; import { LoaderIcon } from '@shared/icons'; import { MemoizedRepost, MemoizedTextNote, UnknownNote } from '@shared/notes'; export function RelayEventList({ relayUrl }: { relayUrl: string }) { const { fetcher } = useNDK(); const { status, data } = useQuery({ queryKey: ['relay-events', relayUrl], queryFn: async () => { const url = 'wss://' + relayUrl; const events = await fetcher.fetchLatestEvents( [url], { kinds: [NDKKind.Text, NDKKind.Repost], }, 20 ); return events as unknown as NDKEvent[]; }, refetchOnWindowFocus: false, }); const renderItem = useCallback( (event: NDKEvent) => { switch (event.kind) { case NDKKind.Text: return ; case NDKKind.Repost: return ; default: return ; } }, [data] ); return (
{status === 'pending' ? (

Loading newsfeed...

) : ( data.map((item) => renderItem(item)) )}
); }