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, NoteWrapper } from '@shared/notes'; import { TitleBar } from '@shared/titleBar'; import { WidgetWrapper } from '@shared/widgets'; import { Widget } from '@utils/types'; export function GlobalArticlesWidget({ params }: { params: Widget }) { const { ndk } = useNDK(); const { status, data } = useQuery( ['global-articles'], async () => { const events = await ndk.fetchEvents({ kinds: [NDKKind.Article], limit: 200, }); const sortedEvents = [...events].sort((x, y) => y.created_at - x.created_at); return sortedEvents; }, { refetchOnWindowFocus: false } ); // render event match event kind const renderItem = useCallback( (event: NDKEvent) => { return ( ); }, [data] ); return (
{status === 'loading' ? (

Loading article...

) : data.length === 0 ? (
empty feeds

Oops, it looks like there are no articles.

You can close this widget

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