webio-node/src/admin.js

74 lines
2.2 KiB
JavaScript
Raw Normal View History

2017-03-22 05:35:45 +00:00
import React from 'react';
import ReactDOM from 'react-dom';
import {Router, Route, browserHistory, IndexRoute} from 'react-router';
import {Provider} from 'react-redux';
import {createStore, applyMiddleware, compose} from 'redux';
import reducers from './reducers';
import routes from './routes';
import thunk from 'redux-thunk';
import {set_i18n} from './actions';
import i18next from 'i18next';
2017-03-27 10:11:27 +00:00
import {getRequest} from './actions';
2017-03-22 05:35:45 +00:00
const middleware = [thunk];
const composeEnhancers =
typeof window === 'object' &&
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
// Specify extensions options like name, actionsBlacklist, actionsCreators, serialize...
}) : compose;
const enhancer = composeEnhancers(
applyMiddleware(...middleware),
// other store enhancers if any
);
let {NODE_ENV} = process.env;
const store = createStore(reducers, NODE_ENV && NODE_ENV == 'production' ? applyMiddleware(...middleware) : enhancer );
// store.subscribe(() => {
// console.log(store.getState().dialog);
// });
class PageRoot extends React.Component {
componentDidMount(){
2017-03-27 10:11:27 +00:00
fetch('/api/system/chklogin', getRequest())
.then(response=>response.json())
.then(json => {
if(json.status != 1) return location.replace('/');
2017-04-05 07:36:29 +00:00
let slang = sessionStorage.getItem('lang');
let lang = slang || navigator
2017-03-27 10:11:27 +00:00
.language
.substring(0, 2);
fetch(`/locales/${lang}.json`).then(response => {
if (response.status == 200)
return response.json();
return {}
}).then(json => {
let lang = Object.keys(json)[0] || '';
i18next.init({
lng: lang,
resources: json
}, () => {
store.dispatch(set_i18n(i18next));
})
})
2017-03-22 05:35:45 +00:00
})
}
render() {
return (
<Provider store={store}>
<Router history={browserHistory} routes={routes}/>
</Provider>
)
}
}
ReactDOM.render(
<PageRoot />,
document.getElementById('app')
);