diff --git a/src/frontend/src/auth/AuthContext.tsx b/src/frontend/src/auth/AuthContext.tsx index 37f53dd..27ebb65 100644 --- a/src/frontend/src/auth/AuthContext.tsx +++ b/src/frontend/src/auth/AuthContext.tsx @@ -53,12 +53,14 @@ export function AuthProvider({ children }: { children: ReactNode }) { const changePassword = useCallback(async (currentPassword: string, newPassword: string) => { const u = await api.changePassword(currentPassword, newPassword) - setUser(u) - // El Set-Cookie de la respuesta a veces no está visible para el fetch - // siguiente en el mismo microtask (Chrome/Firefox). Confirmamos con - // un round-trip al backend antes de soltar el control, asi React - // monta AuthenticatedApp con la cookie ya lista para los fetches internos. + // Round-trip ANTES de setUser(u). El Set-Cookie de la respuesta a + // change-password no está visible para el fetch siguiente en el mismo + // microtask en algunos navegadores. Si setteamos user primero, React + // re-renderiza AuthenticatedApp, su useEffect dispara api.getState() y + // pega el 401 antes de que el cookie esté aplicada al cookie store. + // Await api.me() ANTES fuerza ese round-trip a completarse. await api.me() + setUser(u) }, []) return (