From 16b5c16e76b6ae55df061cf434689611a81cceac Mon Sep 17 00:00:00 2001 From: chenhang Date: Mon, 20 Jul 2026 10:42:40 +0800 Subject: [PATCH] fix(auth): remove character context dependency --- src/app/auth/auth-screen.tsx | 10 +++++----- .../components/__tests__/tailwind-components.test.tsx | 9 +++++++-- src/app/auth/components/auth-panel.tsx | 6 +++--- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/app/auth/auth-screen.tsx b/src/app/auth/auth-screen.tsx index 164a229c..f211dcd0 100644 --- a/src/app/auth/auth-screen.tsx +++ b/src/app/auth/auth-screen.tsx @@ -5,12 +5,12 @@ * */ import { useEffect, useSyncExternalStore } from "react"; +import { useRouter } from "next/navigation"; import { MobileShell } from "@/app/_components/core"; import { useAuthState } from "@/stores/auth/auth-context"; import { isAuthenticatedUser } from "@/router/navigation-resolver"; import { ROUTES } from "@/router/routes"; -import { useAppNavigator } from "@/router/use-app-navigator"; import { AuthBackground, AuthPanel } from "./components"; import { Logger } from "@/utils/logger"; @@ -19,7 +19,7 @@ const log = new Logger("AppAuthAuthScreen"); export function AuthScreen() { const state = useAuthState(); - const navigator = useAppNavigator(); + const router = useRouter(); const redirectTo = useSyncExternalStore( subscribeLocationSnapshot, readRedirectFromLocation, @@ -37,14 +37,14 @@ export function AuthScreen() { }); if (shouldRedirect) { - log.debug("[auth-screen] useEffect → navigator.replace", { + log.debug("[auth-screen] useEffect → router.replace", { redirectTo: safeRedirectTo, }); - navigator.replace(safeRedirectTo); + router.replace(safeRedirectTo); } }, [ state.loginStatus, - navigator, + router, safeRedirectTo, ]); diff --git a/src/app/auth/components/__tests__/tailwind-components.test.tsx b/src/app/auth/components/__tests__/tailwind-components.test.tsx index 014ef661..41e96cc9 100644 --- a/src/app/auth/components/__tests__/tailwind-components.test.tsx +++ b/src/app/auth/components/__tests__/tailwind-components.test.tsx @@ -1,6 +1,7 @@ import { renderToStaticMarkup } from "react-dom/server"; import { describe, expect, it, vi } from "vitest"; +import { AuthScreen } from "../../auth-screen"; import { AuthBackground } from "../auth-background"; import { AuthEmailPanel } from "../auth-email-panel"; import { AuthErrorMessage } from "../auth-error-message"; @@ -24,11 +25,15 @@ vi.mock("@/stores/auth/auth-context", () => ({ }), })); -vi.mock("@/router/use-app-navigator", () => ({ - useAppNavigator: () => ({ back: vi.fn() }), +vi.mock("next/navigation", () => ({ + useRouter: () => ({ back: vi.fn(), replace: vi.fn() }), })); describe("auth Tailwind components", () => { + it("renders outside CharacterProvider", () => { + expect(() => renderToStaticMarkup()).not.toThrow(); + }); + it("renders AuthErrorMessage only when a message is present", () => { expect(renderToStaticMarkup()).toBe(""); diff --git a/src/app/auth/components/auth-panel.tsx b/src/app/auth/components/auth-panel.tsx index 8bedf205..aeef0ca5 100644 --- a/src/app/auth/components/auth-panel.tsx +++ b/src/app/auth/components/auth-panel.tsx @@ -3,8 +3,8 @@ * 认证面板:顶层 switch(Facebook / Email)+ 悬浮返回按钮 */ import { BackButton } from "@/app/_components"; -import { useAppNavigator } from "@/router/use-app-navigator"; import { useAuthDispatch, useAuthState } from "@/stores/auth/auth-context"; +import { useRouter } from "next/navigation"; import { AuthEmailPanel } from "./auth-email-panel"; import { AuthFacebookPanel } from "./auth-facebook-panel"; @@ -12,7 +12,7 @@ import { AuthFacebookPanel } from "./auth-facebook-panel"; export function AuthPanel() { const state = useAuthState(); const dispatch = useAuthDispatch(); - const navigator = useAppNavigator(); + const router = useRouter(); const switchToFacebook = () => dispatch({ type: "AuthPanelModeChanged", mode: "facebook" }); @@ -23,7 +23,7 @@ export function AuthPanel() { if (state.authPanelMode === "email") { switchToFacebook(); } else { - navigator.back(); + router.back(); } };