import { getTranslations, setRequestLocale } from 'next-intl/server'
import { Link } from '@/i18n/navigation'
import { getSession } from '@/lib/session'
import { PageShell } from '@/components/PageShell'
import { LoginForm } from './LoginForm'

// Lee la sesión (cookies), así que no se puede prerenderizar.
export const dynamic = 'force-dynamic'

export default async function LoginPage({ params }: { params: Promise<{ locale: string }> }) {
  const { locale } = await params
  setRequestLocale(locale)
  const t = await getTranslations('Login')

  // Ya conectado: `bnetId` basta, es lo que da por buena la sesión el resto del
  // sitio. Sin esto se ofrecía el formulario a quien ya tenía sesión.
  const session = await getSession()
  if (session.bnetId) {
    return (
      <PageShell title={t('title')}>
        <div className="box-content">
          <div className="body-box-content centered">
            <p>{t('alreadyLogged')}</p>
            <br />
            {/* `<a>` plano, NUNCA <Link>: /log-out es un GET que destruye la sesión,
                y <Link> lo prefetcharía al entrar en pantalla, cerrándola sola sin
                que nadie pulse. SiteHeader lo enlaza así por lo mismo. */}
            <p>{t.rich('alreadyLoggedOther', { logout: (c) => <a href={`/${locale}/log-out`}>{c}</a> })}</p>
          </div>
        </div>
      </PageShell>
    )
  }

  return (
    <PageShell title={t('title')}>
      <div className="box-content">
        <div className="body-box-content centered">
          <LoginForm />
          <br />
          <p>
            <Link href="/recover">{t('forgot')}</Link>
          </p>
          <p>
            <Link href="/recover">{t('forgotActivation')}</Link>
          </p>
          <br />
          <p>
            {t('newHere')} <Link href="/create-account">{t('createAccount')}</Link>
          </p>
          <br />
          <p className="grey-info2">{t('publicNote')}</p>
        </div>
      </div>
    </PageShell>
  )
}
