import { NDKEvent, NDKKind } from '@nostr-dev-kit/ndk'; import { useQuery } from '@tanstack/react-query'; import { useVirtualizer } from '@tanstack/react-virtual'; import { useCallback, useRef } from 'react'; import { useParams } from 'react-router-dom'; import { UserProfile } from '@app/users/components/profile'; import { useNDK } from '@libs/ndk/provider'; import { ArticleNote, FileNote, NoteSkeleton, NoteWrapper, Repost, TextNote, UnknownNote, } from '@shared/notes'; import { nHoursAgo } from '@utils/date'; export function UserScreen() { const { pubkey } = useParams(); const { ndk } = useNDK(); const { status, data } = useQuery(['user-feed', pubkey], async () => { const events = await ndk.fetchEvents({ kinds: [NDKKind.Text, NDKKind.Repost, NDKKind.Article], authors: [pubkey], since: nHoursAgo(48), }); return [...events] as unknown as NDKEvent[]; }); const parentRef = useRef(); const virtualizer = useVirtualizer({ count: data ? data.length : 0, getScrollElement: () => parentRef.current, estimateSize: () => 650, overscan: 4, }); const items = virtualizer.getVirtualItems(); // render event match event kind const renderItem = useCallback( (index: string | number) => { const event: NDKEvent = data[index]; if (!event) return; switch (event.kind) { case NDKKind.Text: return (
User doesn't have any posts in the last 48 hours.