refactor(auth): clean up user logout handling in SidebarScreen
This commit is contained in:
@@ -37,23 +37,16 @@ export function SidebarScreen() {
|
||||
const authDispatch = useAuthDispatch();
|
||||
const router = useRouter();
|
||||
|
||||
// 等价 Dart: UserBloc.init
|
||||
useEffect(() => {
|
||||
userDispatch({ type: "UserInit" });
|
||||
}, [userDispatch]);
|
||||
|
||||
// 等价 Dart: BlocConsumer<UserBloc> 的 listener(profile_view.dart:24-34)
|
||||
// 仅在 currentUser 由非 null 跳到 null 时触发清理
|
||||
// 通过 `useAuthState()` 主动订阅 loginStatus;这里只需重置 auth + 跳 /chat
|
||||
const prevUserRef = useRef<UserView | null>(user.currentUser);
|
||||
useEffect(() => {
|
||||
const wasLoggedIn = prevUserRef.current != null;
|
||||
const isNowLoggedOut = user.currentUser == null;
|
||||
prevUserRef.current = user.currentUser;
|
||||
if (wasLoggedIn && isNowLoggedOut) {
|
||||
// AuthReset:清场(context 回到 initialState,loginStatus="notLoggedIn")
|
||||
// 不需要再 dispatch AuthInit 校验 storage —— userLogoutActor 已清空 storage,
|
||||
// AuthReset 直接写回 initialState 已与 storage 对齐。
|
||||
authDispatch({ type: "AuthReset" });
|
||||
router.replace(ROUTES.chat);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user