diff --git a/web-next/app/[locale]/login/LoginForm.tsx b/web-next/app/[locale]/login/LoginForm.tsx index 5a755d6..1efc234 100644 --- a/web-next/app/[locale]/login/LoginForm.tsx +++ b/web-next/app/[locale]/login/LoginForm.tsx @@ -1,15 +1,14 @@ 'use client' import { useState } from 'react' -import { useTranslations } from 'next-intl' -import { useRouter } from '@/i18n/navigation' +import { useTranslations, useLocale } from 'next-intl' import { Turnstile } from '@/components/Turnstile' const ERROR_KEYS = ['invalidCredentials', 'missingFields', 'invalidRequest', 'captchaFailed'] as const export function LoginForm() { const t = useTranslations('Login') - const router = useRouter() + const locale = useLocale() const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [showPw, setShowPw] = useState(false) @@ -36,7 +35,11 @@ export function LoginForm() { const data: { success?: boolean; needsSelection?: boolean; error?: string } = await res.json() if (data.success) { setMessage({ ok: true, text: t('success') }) - router.push(data.needsSelection ? '/select-account' : '/my-account') + // Navegación completa (no del lado cliente): fuerza que el servidor + // re-renderice el layout/cabecera con la sesión nueva. Con router.push + // el layout persiste y la cabecera seguía mostrando "Conectar". + window.location.assign(`/${locale}${data.needsSelection ? '/select-account' : '/my-account'}`) + return } else { const key = (ERROR_KEYS as readonly string[]).includes(data.error ?? '') ? data.error! : 'genericError' setMessage({ ok: false, text: t(key) }) diff --git a/web-next/app/[locale]/select-account/SelectAccountForm.tsx b/web-next/app/[locale]/select-account/SelectAccountForm.tsx index 1a713a7..95e730f 100644 --- a/web-next/app/[locale]/select-account/SelectAccountForm.tsx +++ b/web-next/app/[locale]/select-account/SelectAccountForm.tsx @@ -1,8 +1,7 @@ 'use client' import { useState } from 'react' -import { useTranslations } from 'next-intl' -import { useRouter } from '@/i18n/navigation' +import { useTranslations, useLocale } from 'next-intl' interface GameAccount { id: number @@ -11,7 +10,7 @@ interface GameAccount { export function SelectAccountForm({ accounts }: { accounts: GameAccount[] }) { const t = useTranslations('SelectAccount') - const router = useRouter() + const locale = useLocale() const [busy, setBusy] = useState(null) const [error, setError] = useState(null) @@ -27,7 +26,8 @@ export function SelectAccountForm({ accounts }: { accounts: GameAccount[] }) { body: JSON.stringify({ accountId: id }), }) const data: { success?: boolean } = await res.json() - if (data.success) router.push('/my-account') + // Navegación completa: re-renderiza el layout/cabecera con la cuenta ya elegida. + if (data.success) window.location.assign(`/${locale}/my-account`) else { setError(t('error')) setBusy(null)