import { cardEventBodyBlurb } from '@/lib/card-event-body-blurb' import { getLongFormArticleMetadataFromEvent } from '@/lib/event-metadata' import { toNote, toNoteList } from '@/lib/link' import { useSecondaryPageOptional } from '@/PageManager' import { useContentPolicyOptional } from '@/providers/ContentPolicyProvider' import { useScreenSizeOptional } from '@/providers/ScreenSizeProvider' import { Event, kinds } from 'nostr-tools' import { useMemo } from 'react' import ArticleCardCoverImage from './ArticleCardCoverImage' export default function WikiCard({ event, className }: { event: Event className?: string }) { const screenSize = useScreenSizeOptional() const isSmallScreen = screenSize?.isSmallScreen ?? false const secondaryPage = useSecondaryPageOptional() const push = secondaryPage?.push ?? ((url: string) => { window.location.href = url }) const contentPolicy = useContentPolicyOptional() const autoLoadMedia = contentPolicy?.autoLoadMedia ?? true const metadata = useMemo(() => getLongFormArticleMetadataFromEvent(event), [event]) const bodyBlurb = useMemo(() => cardEventBodyBlurb(event.content), [event.content]) const summaryText = (metadata.summary?.trim() || bodyBlurb).trim() const handleCardClick = (e: React.MouseEvent) => { e.stopPropagation() push(toNote(event)) } const titleComponent =
{metadata.title}
const tagsComponent = metadata.tags.length > 0 && (
{metadata.tags.map((tag) => (
{ e.stopPropagation() push(toNoteList({ hashtag: tag, kinds: [kinds.LongFormArticle] })) }} > #{tag}
))}
) const summaryComponent = summaryText ? (
{summaryText}
) : null if (isSmallScreen) { return (
{titleComponent} {summaryComponent} {tagsComponent}
) } return (
{titleComponent} {summaryComponent} {tagsComponent}
) }