From c3f2f8d9540cbb4728c42ea4833ad111c26bc710 Mon Sep 17 00:00:00 2001 From: chenhang Date: Wed, 17 Jun 2026 12:59:48 +0800 Subject: [PATCH] fix(sidebar): trigger logout from click --- src/app/sidebar/components/sidebar-screen.tsx | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/app/sidebar/components/sidebar-screen.tsx b/src/app/sidebar/components/sidebar-screen.tsx index 48c9eef9..d47a97be 100644 --- a/src/app/sidebar/components/sidebar-screen.tsx +++ b/src/app/sidebar/components/sidebar-screen.tsx @@ -1,6 +1,6 @@ "use client"; -import { useEffect, useRef } from "react"; +import { useEffect } from "react"; import { useRouter } from "next/navigation"; import { MobileShell } from "@/app/_components/core/mobile-shell"; @@ -9,8 +9,6 @@ import { ROUTES } from "@/router/routes"; import { useAuthDispatch, useAuthState } from "@/stores/auth/auth-context"; import { useUserDispatch, useUserState } from "@/stores/user/user-context"; -import type { UserView } from "@/models/user/user"; - import { BackBar } from "./back-bar"; import { UserHeader, type SidebarUserState } from "./user-header"; import { VipBenefitsCard } from "./vip-benefits-card"; @@ -41,16 +39,11 @@ export function SidebarScreen() { userDispatch({ type: "UserInit" }); }, [userDispatch]); - const prevUserRef = useRef(user.currentUser); - useEffect(() => { - const wasLoggedIn = prevUserRef.current != null; - const isNowLoggedOut = user.currentUser == null; - prevUserRef.current = user.currentUser; - if (wasLoggedIn && isNowLoggedOut) { - authDispatch({ type: "AuthReset" }); - router.replace(ROUTES.chat); - } - }, [user.currentUser, authDispatch, router]); + const handleLogoutClick = () => { + authDispatch({ type: "AuthReset" }); + userDispatch({ type: "UserLogout" }); + router.replace(ROUTES.chat); + }; // 状态派生:未登录 / 已登录未 VIP / 已登录 VIP const sidebarState: SidebarUserState = @@ -111,7 +104,7 @@ export function SidebarScreen() { id: "logout", title: "Log out", destructive: true, - onClick: () => userDispatch({ type: "UserLogout" }), + onClick: handleLogoutClick, }, ]} />