select-account: mostrar WOW1/WOW2/WOW3 en vez de 15#1/15#2/15#3
El selector de cuentas de juego listaba el nombre interno (15#1). Ahora usa wowAccountLabel (mismo criterio que my-account/cabecera): «15#1» → «WOW1». La etiqueta se calcula en el Server Component (bnet.ts importa crypto, no vale en cliente) y se pasa al formulario. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import { useTranslations, useLocale } from 'next-intl'
|
|||||||
interface GameAccount {
|
interface GameAccount {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
|
label: string // nombre visible: «15#1» → «WOW1»
|
||||||
}
|
}
|
||||||
|
|
||||||
export function SelectAccountForm({ accounts }: { accounts: GameAccount[] }) {
|
export function SelectAccountForm({ accounts }: { accounts: GameAccount[] }) {
|
||||||
@@ -50,7 +51,7 @@ export function SelectAccountForm({ accounts }: { accounts: GameAccount[] }) {
|
|||||||
disabled={busy !== null}
|
disabled={busy !== null}
|
||||||
className="login-button"
|
className="login-button"
|
||||||
>
|
>
|
||||||
{busy === a.id ? t('entering') : a.username}
|
{busy === a.id ? t('entering') : a.label}
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { getTranslations, setRequestLocale } from 'next-intl/server'
|
|||||||
import { redirect } from '@/i18n/navigation'
|
import { redirect } from '@/i18n/navigation'
|
||||||
import { getSession } from '@/lib/session'
|
import { getSession } from '@/lib/session'
|
||||||
import { getGameAccounts } from '@/lib/auth'
|
import { getGameAccounts } from '@/lib/auth'
|
||||||
|
import { wowAccountLabel } from '@/lib/bnet'
|
||||||
import { PageShell } from '@/components/PageShell'
|
import { PageShell } from '@/components/PageShell'
|
||||||
import { SelectAccountForm } from './SelectAccountForm'
|
import { SelectAccountForm } from './SelectAccountForm'
|
||||||
|
|
||||||
@@ -15,7 +16,8 @@ export default async function SelectAccountPage({ params }: { params: Promise<{
|
|||||||
const session = await getSession()
|
const session = await getSession()
|
||||||
if (!session.bnetId) redirect({ href: '/login', locale })
|
if (!session.bnetId) redirect({ href: '/login', locale })
|
||||||
|
|
||||||
const games = await getGameAccounts(session.bnetId!)
|
// Etiqueta visible «15#1» → «WOW1» (mismo criterio que my-account/cabecera).
|
||||||
|
const games = (await getGameAccounts(session.bnetId!)).map((g) => ({ ...g, label: wowAccountLabel(g.username) }))
|
||||||
// Autoseleccionar si solo hay una
|
// Autoseleccionar si solo hay una
|
||||||
if (games.length === 1) {
|
if (games.length === 1) {
|
||||||
// La selección real la hace el cliente/route; aquí mostramos el formulario igual,
|
// La selección real la hace el cliente/route; aquí mostramos el formulario igual,
|
||||||
|
|||||||
Reference in New Issue
Block a user