2018-09-17 13:55:49 -07:00
|
|
|
import '@babel/polyfill';
|
|
|
|
import React from 'react';
|
|
|
|
import { hot } from 'react-hot-loader';
|
|
|
|
import { hydrate } from 'react-dom';
|
|
|
|
import { loadComponents } from 'loadable-components';
|
|
|
|
import { Provider } from 'react-redux';
|
|
|
|
import { BrowserRouter as Router } from 'react-router-dom';
|
2018-10-03 12:08:14 -07:00
|
|
|
import { PersistGate } from 'redux-persist/integration/react';
|
2018-11-04 10:26:34 -08:00
|
|
|
import { I18nextProvider } from 'react-i18next';
|
2018-09-17 13:55:49 -07:00
|
|
|
import { configureStore } from 'store/configure';
|
|
|
|
import Routes from './Routes';
|
2018-11-04 10:26:34 -08:00
|
|
|
import i18n from './i18n';
|
2018-09-17 13:55:49 -07:00
|
|
|
|
|
|
|
const initialState = window && (window as any).__PRELOADED_STATE__;
|
2018-10-03 12:08:14 -07:00
|
|
|
const { store, persistor } = configureStore(initialState);
|
2018-11-04 10:26:34 -08:00
|
|
|
const i18nLanguage = window && (window as any).__PRELOADED_I18N__;
|
|
|
|
i18n.changeLanguage(i18nLanguage.locale);
|
|
|
|
i18n.addResourceBundle(i18nLanguage.locale, 'common', i18nLanguage.resources, true);
|
2018-09-17 13:55:49 -07:00
|
|
|
|
|
|
|
const App = hot(module)(() => (
|
2018-11-04 10:26:34 -08:00
|
|
|
<I18nextProvider i18n={i18n}>
|
|
|
|
<Provider store={store}>
|
|
|
|
<PersistGate persistor={persistor}>
|
|
|
|
<Router>
|
|
|
|
<Routes />
|
|
|
|
</Router>
|
|
|
|
</PersistGate>
|
|
|
|
</Provider>
|
|
|
|
</I18nextProvider>
|
2018-09-17 13:55:49 -07:00
|
|
|
));
|
|
|
|
|
|
|
|
loadComponents().then(() => {
|
|
|
|
hydrate(<App />, document.getElementById('app'));
|
|
|
|
});
|