import React, { useEffect, useRef } from 'react' import WorldCampaignMeta from './WorldCampaignMeta' import WorldStatusBadge from './WorldStatusBadge' import { trackWorldSourceImpression } from '../../lib/worldAnalytics' export default function UploadWorldHighlightCard({ world, sourceSurface = '', sourceDetail = '' }) { const cardRef = useRef(null) useEffect(() => { if (!sourceSurface || !world?.id || typeof window === 'undefined') { return undefined } const node = cardRef.current if (!node) { return undefined } if (typeof window.IntersectionObserver !== 'function') { trackWorldSourceImpression({ worldId: world.id, worldTitle: world.title, sourceSurface, sourceDetail, sectionKey: 'upload_highlight', }) return undefined } const observer = new window.IntersectionObserver((entries) => { entries.forEach((entry) => { if (!entry.isIntersecting || entry.intersectionRatio < 0.5) { return } trackWorldSourceImpression({ worldId: world.id, worldTitle: world.title, sourceSurface, sourceDetail, sectionKey: 'upload_highlight', }) observer.disconnect() }) }, { threshold: [0.5] }) observer.observe(node) return () => observer.disconnect() }, [sourceDetail, sourceSurface, world?.id, world?.title]) if (!world) { return null } return (
{world.teaser_summary || world.summary}
: null}