import { NDKEvent, NDKKind } from '@nostr-dev-kit/ndk'; import { useQuery } from '@tanstack/react-query'; import { useCallback } from 'react'; import { WVList } from 'virtua'; import { useNDK } from '@libs/ndk/provider'; import { ArticleNote, FileNote, NoteSkeleton, NoteWrapper, Repost, TextNote, UnknownNote, } from '@shared/notes'; import { TitleBar } from '@shared/titleBar'; import { UserProfile } from '@shared/userProfile'; import { WidgetWrapper } from '@shared/widgets'; import { nHoursAgo } from '@utils/date'; import { Widget } from '@utils/types'; export function LocalUserWidget({ params }: { params: Widget }) { const { ndk } = useNDK(); const { status, data } = useQuery( ['user-posts', params.content], async () => { const events = await ndk.fetchEvents({ // @ts-expect-error, NDK not support file metadata yet kinds: [NDKKind.Text, NDKKind.Repost, 1063, NDKKind.Article], authors: [params.content], since: nHoursAgo(24), }); const sortedEvents = [...events].sort((x, y) => y.created_at - x.created_at); return sortedEvents; }, { staleTime: Infinity, refetchOnMount: false, refetchOnReconnect: false, refetchOnWindowFocus: false, } ); // 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 ? ( No new post from 24 hours ago ) : ( data.map((item) => renderItem(item)) )} ); }
No new post from 24 hours ago