import { For } from 'solid-js'; import parseTextNote, { type ParsedTextNoteNode } from '@/core/parseTextNote'; import type { Event as NostrEvent } from 'nostr-tools'; import PlainTextDisplay from '@/components/textNote/PlainTextDisplay'; import MentionedUserDisplay from '@/components/textNote/MentionedUserDisplay'; import MentionedEventDisplay from '@/components/textNote/MentionedEventDisplay'; import ImageDisplay from '@/components/textNote/ImageDisplay'; import SafeLink from '@/components/utils/SafeLink'; import eventWrapper from '@/core/event'; import { isImageUrl } from '@/utils/imageUrl'; import useConfig from '@/nostr/useConfig'; import EventLink from '../EventLink'; import TextNoteDisplayById from './TextNoteDisplayById'; export type TextNoteContentDisplayProps = { event: NostrEvent; embedding: boolean; }; const TextNoteContentDisplay = (props: TextNoteContentDisplayProps) => { const { config } = useConfig(); const event = () => eventWrapper(props.event); return ( {(item: ParsedTextNoteNode) => { if (item.type === 'PlainText') { return ; } if (item.type === 'MentionedUser') { return ; } if (item.type === 'MentionedEvent') { if (props.embedding) { return ; } return ; } if (item.type === 'Bech32Entity') { if (item.data.type === 'note' && props.embedding) { return (
); } if (item.data.type === 'npub') { return ; } if (item.data.type === 'nprofile') { return ; } return {item.content}; } if (item.type === 'HashTag') { return {item.content}; } if (item.type === 'URL') { if (isImageUrl(new URL(item.content))) { return ( ); } return ; } console.error('Not all ParsedTextNoteNodes are covered', item); return null; }}
); }; export default TextNoteContentDisplay;