import { useFetchEvent } from '@/hooks' import { createFakeEvent, isSupportedKind } from '@/lib/event' import { toNjump, toNote } from '@/lib/link' import { isValidPubkey } from '@/lib/pubkey' import { generateEventIdFromATag } from '@/lib/tag' import { cn } from '@/lib/utils' import { useSecondaryPage } from '@/PageManager' import { Event } from 'nostr-tools' import { useMemo } from 'react' import { useTranslation } from 'react-i18next' import Content from '../Content' import ContentPreview from '../ContentPreview' import UserAvatar from '../UserAvatar' export default function Highlight({ event, className }: { event: Event; className?: string }) { const comment = useMemo(() => event.tags.find((tag) => tag[0] === 'comment')?.[1], [event]) return (
{comment && }
{event.content}
) } function HighlightSource({ event }: { event: Event }) { const { t } = useTranslation() const { push } = useSecondaryPage() const sourceTag = useMemo(() => { let sourceTag: string[] | undefined for (const tag of event.tags) { if (tag[2] === 'source') { sourceTag = tag break } if (tag[0] === 'r') { sourceTag = tag continue } else if (tag[0] === 'a') { if (!sourceTag || sourceTag[0] !== 'r') { sourceTag = tag } continue } else if (tag[0] === 'e') { if (!sourceTag || sourceTag[0] === 'e') { sourceTag = tag } continue } } return sourceTag }, [event]) const { event: referenceEvent } = useFetchEvent( sourceTag && sourceTag[0] === 'e' ? sourceTag[1] : undefined ) const referenceEventId = useMemo(() => { if (!sourceTag || sourceTag[0] === 'r') return if (sourceTag[0] === 'e') { return sourceTag[1] } if (sourceTag[0] === 'a') { return generateEventIdFromATag(sourceTag) } }, [sourceTag]) const pubkey = useMemo(() => { if (referenceEvent) { return referenceEvent.pubkey } if (sourceTag && sourceTag[0] === 'a') { const [, pubkey] = sourceTag[1].split(':') if (isValidPubkey(pubkey)) { return pubkey } } }, [sourceTag, referenceEvent]) if (!sourceTag) { return null } if (sourceTag[0] === 'r') { return (
{t('From')}{' '} e.stopPropagation()} > {sourceTag[1]}
) } return (
{t('From')}
{pubkey && } {referenceEvent && isSupportedKind(referenceEvent.kind) ? ( { e.stopPropagation() push(toNote(referenceEvent)) }} /> ) : referenceEventId ? ( ) : null}
) }