mirror of
https://github.com/Funkoala14/KnowledgeBase_OOIN.git
synced 2025-06-08 12:01:53 +08:00
62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
import { useDispatch, useSelector } from 'react-redux';
|
||
import AppRouter from './router/router';
|
||
import { checkAuthThunk } from './store/auth/auth.thunk';
|
||
import { useEffect } from 'react';
|
||
import { useNavigate } from 'react-router-dom';
|
||
import { login } from './store/auth/auth.slice';
|
||
import { initWebSocket, closeWebSocket } from './services/websocket';
|
||
import { setWebSocketConnected } from './store/notificationCenter/notificationCenter.slice';
|
||
|
||
function App() {
|
||
const navigate = useNavigate();
|
||
const dispatch = useDispatch();
|
||
|
||
const { user } = useSelector((state) => state.auth);
|
||
const { isConnected } = useSelector((state) => state.notificationCenter);
|
||
|
||
// 检查用户认证状态
|
||
useEffect(() => {
|
||
handleCheckAuth();
|
||
}, [dispatch]);
|
||
|
||
// 管理WebSocket连接
|
||
useEffect(() => {
|
||
console.log(user, isConnected);
|
||
|
||
// 如果用户已认证但WebSocket未连接,则初始化连接
|
||
if (user && !isConnected) {
|
||
// initWebSocket()
|
||
// .then(() => {
|
||
// dispatch(setWebSocketConnected(true));
|
||
// console.log('WebSocket connection initialized');
|
||
// })
|
||
// .catch((error) => {
|
||
// console.error('Failed to initialize WebSocket connection:', error);
|
||
// });
|
||
}
|
||
|
||
// 组件卸载或用户登出时关闭WebSocket连接
|
||
return () => {
|
||
if (isConnected) {
|
||
closeWebSocket();
|
||
dispatch(setWebSocketConnected(false));
|
||
}
|
||
};
|
||
}, [user, isConnected, dispatch]);
|
||
|
||
const handleCheckAuth = async () => {
|
||
console.log('app handleCheckAuth');
|
||
try {
|
||
await dispatch(checkAuthThunk()).unwrap();
|
||
if (!user) navigate('/login');
|
||
} catch (error) {
|
||
console.log('error', error);
|
||
navigate('/login');
|
||
}
|
||
};
|
||
|
||
return <AppRouter></AppRouter>;
|
||
}
|
||
|
||
export default App;
|