import type { Metadata } from 'next'
import { getTranslations, setRequestLocale } from 'next-intl/server'
import { getSession } from '@/lib/session'
import { PageShell } from '@/components/PageShell'
import { RegisterForm } from './RegisterForm'

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

export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise<Metadata> {
  const { locale } = await params
  const t = await getTranslations({ locale, namespace: 'Register' })
  return { title: t('title') }
}

export default async function CreateAccountPage({ params }: { params: Promise<{ locale: string }> }) {
  const { locale } = await params
  setRequestLocale(locale)
  const t = await getTranslations('Register')
  // El cuadro informativo se queda: sigue explicando cómo son las cuentas aunque
  // ya tengas sesión. Lo que se sustituye es el formulario.
  const session = await getSession()

  return (
    <PageShell title={t('title')}>
      <div className="box-content" tabIndex={-1}>
        <div className="body-box-content info-box-light justified">
          <p>{t('bnetType')}</p>
          <p>{t('passwordRule')}</p>
          <p>{t('emailRule')}</p>
          <br />
          <p>{t('activation1')}</p>
          <p>{t('activation2')}</p>
          <p>
            <i className="fas fa-exclamation-triangle"></i> {t('loginHint')}
          </p>
        </div>
      </div>
      <div className="box-content">
        <div className="body-box-content centered">
          {session.bnetId ? (
            <>
              <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('alreadyLoggedCreate', { logout: (c) => <a href={`/${locale}/log-out`}>{c}</a> })}</p>
            </>
          ) : (
            <RegisterForm />
          )}
        </div>
      </div>
    </PageShell>
  )
}
