import { NDKEvent, NDKKind } from '@nostr-dev-kit/ndk'; import { useQuery } from '@tanstack/react-query'; import { useCallback } from 'react'; import { useParams } from 'react-router-dom'; import { WVList } from 'virtua'; 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[]; }); // render event match event kind 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 (

Latest posts

{status === 'loading' ? (
) : data.length === 0 ? (

User doesn't have any posts in the last 48 hours.

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