import { useSecondaryPage } from '@/PageManager' import ContentPreview from '@/components/ContentPreview' import Nip22ReplyNoteList from '@/components/Nip22ReplyNoteList' import Note from '@/components/Note' import NoteStats from '@/components/NoteStats' import PictureNote from '@/components/PictureNote' import ReplyNoteList from '@/components/ReplyNoteList' import UserAvatar from '@/components/UserAvatar' import { Card } from '@/components/ui/card' import { Separator } from '@/components/ui/separator' import { Skeleton } from '@/components/ui/skeleton' import { useFetchEvent } from '@/hooks' import SecondaryPageLayout from '@/layouts/SecondaryPageLayout' import { getParentEventId, getRootEventId, isPictureEvent } from '@/lib/event' import { toNote } from '@/lib/link' import { useMuteList } from '@/providers/MuteListProvider' import { kinds } from 'nostr-tools' import { forwardRef, useMemo } from 'react' import { useTranslation } from 'react-i18next' import NotFoundPage from '../NotFoundPage' const NotePage = forwardRef(({ id, index }: { id?: string; index?: number }, ref) => { const { t } = useTranslation() const { event, isFetching } = useFetchEvent(id) const parentEventId = useMemo( () => (event?.kind === kinds.ShortTextNote ? getParentEventId(event) : undefined), [event] ) const rootEventId = useMemo( () => (event?.kind === kinds.ShortTextNote ? getRootEventId(event) : undefined), [event] ) if (!event && isFetching) { return (
) } if (!event) return if (isPictureEvent(event)) { return ( ) } return (
{rootEventId !== parentEventId && ( )}
{[kinds.ShortTextNote, kinds.Highlights].includes(event.kind) ? ( ) : ( )}
) }) NotePage.displayName = 'NotePage' export default NotePage function ParentNote({ eventId }: { eventId?: string }) { const { t } = useTranslation() const { push } = useSecondaryPage() const { mutePubkeys } = useMuteList() const { event, isFetching } = useFetchEvent(eventId) if (!eventId) return null if (isFetching) { return (
push(toNote(eventId))} >
) } if (!event) { return (
[{t('Not found the note')}]
) } if (mutePubkeys.includes(event.pubkey)) { return (
push(toNote(eventId))} >
[{t('This user has been muted')}]
) } return (
push(toNote(eventId))} >
) }