import HeaderBar from './HeaderBar.js'; import { Layout } from '@douyinfe/semi-ui'; import SiderBar from './SiderBar.js'; import App from '../../App.js'; import FooterBar from './Footer.js'; import { ToastContainer } from 'react-toastify'; import React, { useContext, useEffect } from 'react'; import { useStyle } from '../../context/Style/index.js'; import { useTranslation } from 'react-i18next'; import { API, getLogo, getSystemName, showError, setStatusData } from '../../helpers/index.js'; import { UserContext } from '../../context/User/index.js'; import { StatusContext } from '../../context/Status/index.js'; import { useLocation } from 'react-router-dom'; const { Sider, Content, Header, Footer } = Layout; const PageLayout = () => { const [userState, userDispatch] = useContext(UserContext); const [statusState, statusDispatch] = useContext(StatusContext); const { state: styleState } = useStyle(); const { i18n } = useTranslation(); const location = useLocation(); const shouldHideFooter = location.pathname === '/console/playground' || location.pathname.startsWith('/console/chat'); const shouldInnerPadding = location.pathname.includes('/console') && !location.pathname.startsWith('/console/chat') && location.pathname !== '/console/playground'; const loadUser = () => { let user = localStorage.getItem('user'); if (user) { let data = JSON.parse(user); userDispatch({ type: 'login', payload: data }); } }; const loadStatus = async () => { try { const res = await API.get('/api/status'); const { success, data } = res.data; if (success) { statusDispatch({ type: 'set', payload: data }); setStatusData(data); } else { showError('Unable to connect to server'); } } catch (error) { showError('Failed to load status'); } }; useEffect(() => { loadUser(); loadStatus().catch(console.error); let systemName = getSystemName(); if (systemName) { document.title = systemName; } let logo = getLogo(); if (logo) { let linkElement = document.querySelector("link[rel~='icon']"); if (linkElement) { linkElement.href = logo; } } // 从localStorage获取上次使用的语言 const savedLang = localStorage.getItem('i18nextLng'); if (savedLang) { i18n.changeLanguage(savedLang); } }, [i18n]); return (
{styleState.showSider && ( )} {!shouldHideFooter && ( )}
); }; export default PageLayout;