import { NDKEvent } from '@nostr-dev-kit/ndk'; import { useQuery } from '@tanstack/react-query'; import { VList } from 'virtua'; import { LoaderIcon } from '@shared/icons'; import { MemoizedTextNote } from '@shared/notes'; import { TitleBar } from '@shared/titleBar'; import { WidgetWrapper } from '@shared/widgets'; import { Widget } from '@utils/types'; interface Response { notes: Array<{ event: NDKEvent }>; } export function TrendingNotesWidget({ params }: { params: Widget }) { const { status, data } = useQuery({ queryKey: ['trending-notes-widget'], queryFn: async () => { const res = await fetch('https://api.nostr.band/v0/trending/notes'); if (!res.ok) { throw new Error('failed to fecht trending notes'); } const json: Response = await res.json(); if (!json.notes) return null; return json.notes; }, refetchOnMount: false, refetchOnReconnect: false, refetchOnWindowFocus: false, staleTime: Infinity, }); return (
{status === 'pending' ? (

Loading trending posts...

) : status === 'error' ? (
empty feeds

Sorry, an unexpected error has occurred.

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