// tdd-guard:skip — server component that only loads session + composes the header.
import { getUserSession } from '@/lib/auth/permissions'
import { resolveAvatarUrl } from '@/lib/avatar/avatar-url'
import CollapsibleHeader from './collapsible-header'

interface Props {
  title: string
  subtitle?: string
  backHref?: string
  /** Right-side slot for extra actions (passed as React node) */
  actions?: React.ReactNode
}

export default async function AppHeader({ title, subtitle, backHref, actions }: Props) {
  // Read identity from the user_profiles-backed session so the header reflects
  // the saved "Anzeigename" (display_name) + avatar, not stale auth metadata.
  const session = await getUserSession()

  const name: string = session?.displayName ?? ''
  const email: string = session?.email ?? ''
  const avatarUrl: string | null = await resolveAvatarUrl(session?.avatarUrl ?? null)

  return (
    <CollapsibleHeader
      title={title}
      subtitle={subtitle}
      backHref={backHref}
      actions={actions}
      userName={name}
      userEmail={email}
      avatarUrl={avatarUrl}
    />
  )
}
