import { NoteMetadata } from '@components/note/metadata'; import { RelayContext } from '@components/relaysProvider'; import { UserExtend } from '@components/user/extend'; import { contentParser } from '@utils/parser'; import { useRouter } from 'next/navigation'; import { memo, useCallback, useContext, useEffect, useRef, useState } from 'react'; export const RootNote = memo(function RootNote({ event }: { event: any }) { const router = useRouter(); const [pool, relays]: any = useContext(RelayContext); const [data, setData] = useState(null); const [content, setContent] = useState(''); const unsubscribe = useRef(null); const openUserPage = (e) => { e.stopPropagation(); router.push(`/users/${event.pubkey}`); }; const openThread = (e) => { const selection = window.getSelection(); if (selection.toString().length === 0) { router.push(`/newsfeed/${event.id}`); } else { e.stopPropagation(); } }; const fetchEvent = useCallback( async (id: string) => { unsubscribe.current = pool.subscribe( [ { ids: [id], kinds: [1], }, ], relays, (event: any) => { setData(event); setContent(contentParser(event.content, event.tags)); }, undefined, undefined, { unsubscribeOnEose: true, } ); }, [pool, relays] ); useEffect(() => { if (typeof event === 'object') { setData(event); setContent(contentParser(event.content, event.tags)); } else { fetchEvent(event); } }, [event, fetchEvent]); if (data) { return (
openThread(e)} className="relative z-10 flex flex-col">
openUserPage(e)}>
{content}
e.stopPropagation()} className="mt-5 pl-[52px]">
); } else { return (
ยท
); } });