import React, { useState, useEffect } from 'react';
import { createStore } from 'redux';
import { Provider } from 'react-redux';
import { ConfigProvider } from '@arco-design/web-react';
import zhCN from '@arco-design/web-react/es/locale/zh-CN';
import enUS from '@arco-design/web-react/es/locale/en-US';
import ReactDOM from 'react-dom';
import { Router, Switch, Route } from 'react-router-dom';
import axios from 'axios';
import rootReducer from './redux';
import history from './history';
import PageLayout from './layout/page-layout';
import Setting from './components/Settings';
import { GlobalContext } from './context';
import './style/index.less';
import './mock';
import Login from './pages/login';
import checkLogin from './utils/checkLogin';
const store = createStore(rootReducer);
function Index() {
const localeName = localStorage.getItem('arco-lang') || 'zh-CN';
if (!localStorage.getItem('arco-lang')) {
localStorage.setItem('arco-lang', localeName);
}
const [locale, setLocale] = useState();
async function fetchLocale(ln?: string) {
const locale = (await import(`./locale/${ln || localeName}`)).default;
setLocale(locale);
}
function getArcoLocale() {
switch (localeName) {
case 'zh-CN':
return zhCN;
case 'en-US':
return enUS;
default:
return zhCN;
}
}
function fetchUserInfo() {
axios.get('/api/user/userInfo').then((res) => {
store.dispatch({
type: 'update-userInfo',
payload: { userInfo: res.data },
});
});
}
useEffect(() => {
fetchLocale();
}, []);
useEffect(() => {
if (checkLogin()) {
fetchUserInfo();
} else {
history.push('/user/login');
}
}, []);
const contextValue = {
locale,
};
return locale ? (
) : null;
}
ReactDOM.render(, document.getElementById('root'));