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 { ArticleNote, FileNote, NoteWrapper, Repost, TextNote, UnknownNote, } from '@shared/notes'; export function RelayEventList({ relayUrl }: { relayUrl: string }) { const { fetcher } = useNDK(); const { status, data } = useQuery( ['relay-event'], async () => { const url = 'wss://' + relayUrl; const events = await fetcher.fetchLatestEvents( [url], { kinds: [NDKKind.Text, NDKKind.Repost, 1063, NDKKind.Article], }, 100 ); return events as unknown as NDKEvent[]; }, { refetchOnWindowFocus: false } ); const renderItem = useCallback( (event: NDKEvent) => { switch (event.kind) { case NDKKind.Text: return ( ); case NDKKind.Repost: return ; case 1063: return ( ); case NDKKind.Article: return ( ); default: return ( ); } }, [data] ); return (
{status === 'loading' ? (

Loading newsfeed...

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