import { NDKKind } from '@nostr-dev-kit/ndk'; import { useEffect, useState } from 'react'; import { NoteSkeleton, Reply } from '@shared/notes'; import { useNostr } from '@utils/hooks/useNostr'; import { NDKEventWithReplies } from '@utils/types'; export function RepliesList({ id }: { id: string }) { const { fetchAllReplies, sub } = useNostr(); const [data, setData] = useState(null); useEffect(() => { let isCancelled = false; async function fetchRepliesAndSub() { const events = await fetchAllReplies(id); if (!isCancelled) { setData(events); } // subscribe for new replies sub( { kinds: [NDKKind.Text], '#e': [id], since: Math.floor(Date.now() / 1000), }, (event: NDKEventWithReplies) => setData((prev) => [event, ...prev]), false ); } fetchRepliesAndSub(); return () => { isCancelled = true; }; }, [id]); if (!data) { return (
); } return (
{data?.length || 0} replies
{data?.length === 0 ? (

👋

Share your thought on it...

) : ( data.map((event) => ) )}
); }