import { redirect } from 'next/navigation'
import { getProfile } from '@/lib/auth'
import { loadActiveMode } from '@/lib/data/active-mode'
import { pendingContexts, switchableContexts } from '@/lib/domain/modes'
import { ModeSelector } from './mode-selector'

/**
 * Choose your mode (Nash, 2026-09-24, §6, §41, §42).
 *
 * A person with one role never sees this — sign-in opens their workspace. A
 * person with several chooses, and may set the choice as their default. An
 * admin chooses a workspace, which is a preview and creates nothing.
 */
export default async function ModesPage() {
  const mode = await loadActiveMode()
  if (!mode) redirect('/login?next=%2Fmodes')
  const profile = (await getProfile())!
  const active = switchableContexts(mode.contexts)
  // One role and no admin powers: there is nothing to choose.
  if (!mode.isAdmin && active.length === 1) redirect(`/api/modes/open?key=${encodeURIComponent(active[0].key)}`)
  return (
    <ModeSelector
      name={profile.full_name || profile.email}
      isAdmin={mode.isAdmin}
      contexts={active}
      pending={pendingContexts(mode.contexts)}
      workspaces={mode.adminWorkspaces}
      defaultKey={mode.defaultKey}
      adminDefault={mode.adminDefault}
    />
  )
}
