import { NDKEvent } from '@nostr-dev-kit/ndk'; import { useQuery } from '@tanstack/react-query'; import { VList } from 'virtua'; import { LoaderIcon } from '@shared/icons'; import { NoteWrapper, TextNote } 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( ['trending-notes-widget'], 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 === 'loading' ? (

Loading trending posts...

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

Sorry, an unexpected error has occurred.

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