import { EmbeddedHashtagParser, EmbeddedUrlParser, EmbeddedWebsocketUrlParser, parseContent } from '@/lib/content-parser' import { cn } from '@/lib/utils' import { useMemo } from 'react' import { EmbeddedHashtag, EmbeddedLNInvoice, EmbeddedWebsocketUrl } from '../Embedded' import ImageGallery from '../ImageGallery' import MediaPlayer from '../MediaPlayer' import WebPreview from '../WebPreview' import XEmbeddedPost from '../XEmbeddedPost' import YoutubeEmbeddedPlayer from '../YoutubeEmbeddedPlayer' export default function ExternalContent({ content, className, mustLoadMedia }: { content?: string className?: string mustLoadMedia?: boolean }) { const nodes = useMemo(() => { if (!content) return [] return parseContent(content, [ EmbeddedUrlParser, EmbeddedWebsocketUrlParser, EmbeddedHashtagParser ]) }, [content]) if (!nodes || nodes.length === 0) { return null } const node = nodes[0] if (node.type === 'text') { return (
{content}
) } if (node.type === 'url') { return } if (node.type === 'x-post') { return ( ) } if (node.type === 'youtube') { return } if (node.type === 'image' || node.type === 'images') { const data = Array.isArray(node.data) ? node.data : [node.data] return ( ({ url }))} mustLoad={mustLoadMedia} /> ) } if (node.type === 'media') { return } if (node.type === 'invoice') { return } if (node.type === 'websocket-url') { return } if (node.type === 'hashtag') { return } return null }