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();
}
};