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 { UserProfile } from '@app/users/components/profile'; import { useNDK } from '@libs/ndk/provider'; import { MemoizedRepost, MemoizedTextNote, UnknownNote } from '@shared/notes'; export function UserScreen() { const { pubkey } = useParams(); const { ndk } = useNDK(); const { status, data } = useQuery({ queryKey: ['user-feed', pubkey], queryFn: async () => { const events = await ndk.fetchEvents({ kinds: [NDKKind.Text, NDKKind.Repost], authors: [pubkey], limit: 20, }); const sorted = [...events].sort((a, b) => b.created_at - a.created_at); return sorted; }, refetchOnWindowFocus: false, }); // render event match event kind const renderItem = useCallback( (event: NDKEvent) => { switch (event.kind) { case NDKKind.Text: return ; case NDKKind.Repost: return ; default: return ; } }, [data] ); return (

Latest posts

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

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

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