import React from 'react'
import ProfileWorldHistorySummary from './ProfileWorldHistorySummary'
import ProfileWorldTimelineList from './ProfileWorldTimelineList'
function EmptyState({ isOwner, hasPrivateContext }) {
return (
No public worlds timeline yet
{isOwner
? (hasPrivateContext
? 'Public world history appears here once a live, publicly visible submission or recognized placement is available. Until then, private-only world activity is still tracked for you above.'
: 'Public world history appears here once a live, publicly visible submission or recognized placement is available.')
: 'This creator does not have any public world participation or recognition to show yet.'}
)
}
function OwnerNote({ ownerContext }) {
if (!ownerContext) {
return null
}
const details = [
ownerContext.pending_submissions ? `${ownerContext.pending_submissions} pending submission${ownerContext.pending_submissions === 1 ? '' : 's'}` : null,
ownerContext.removed_or_blocked_submissions ? `${ownerContext.removed_or_blocked_submissions} removed or blocked item${ownerContext.removed_or_blocked_submissions === 1 ? '' : 's'}` : null,
ownerContext.hidden_public_entries ? `${ownerContext.hidden_public_entries} recognition${ownerContext.hidden_public_entries === 1 ? '' : 's'} hidden from public view` : null,
].filter(Boolean)
if (details.length === 0) {
return null
}
return (
Private View
Your public worlds timeline stays strict about visibility, but this profile still tracks {details.join(', ')}.
)
}
export default function ProfileWorldHistorySection({ history, isOwner }) {
const entries = Array.isArray(history?.entries) ? history.entries : []
const highlights = Array.isArray(history?.highlights) ? history.highlights : []
const highlightIds = new Set(highlights.map((entry) => entry?.id).filter(Boolean))
const timelineEntries = entries.filter((entry) => !highlightIds.has(entry?.id))
const hasPrivateContext = Boolean(
history?.owner_context?.pending_submissions
|| history?.owner_context?.removed_or_blocked_submissions
|| history?.owner_context?.hidden_public_entries
)
const hasEntries = Boolean(history?.summary?.available) && entries.length > 0
return (
Worlds History
Recurring worlds, challenge outcomes, and standout editions
This timeline pulls together edition-aware world participation, featured placements, finalists, winners, and linked challenge results into one creator-facing history layer.
{hasEntries ? (
<>
{highlights.length > 0 ? (
Highlights
The most recent and highest-signal world appearances surface first so recurring recognition reads like a creator recap, not just a raw list.
) : null}
{timelineEntries.length > 0 ? (
Full Timeline
Every public world appearance, challenge-linked outcome, and edition-aware placement remains visible here in chronological order.
) : null}
>
) : (
)}
)
}