cluedin-widget
Version:
This project contains all the pages needed for browsing entities and searching them. The aim is to replace the CluedIn.Webapp project with this one when all the pages ( including the Admin page ) will be ported to REACT.
74 lines (65 loc) • 2.16 kB
JSX
import App from './App.jsx';
import ReactDOM from 'react-dom';
import React from 'react';
import { IntlProvider } from 'react-intl';
import { createStore, applyMiddleware, combineReducers } from 'redux';
import { Provider } from 'react-redux';
import thunkMiddleware from 'redux-thunk';
import createLogger from 'redux-logger';
import { getCurrentToken, clientId } from '../../core/config';
import reducers from '../../core/reducers';
import localesInfo from '../../locales/en.js';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import iso from '../../iso';
import jsCookie from 'js-cookie';
const loggerMiddleware = createLogger();
const cluedIn = window.__cluedIn || {};
const parts = location.hostname.split('.');
let subdomain = parts.shift();
const mode = iso.browser.getParameterByName('mode');
const createStoreWithMiddleware = applyMiddleware(
thunkMiddleware,
loggerMiddleware,
)(createStore);
let clientIdAssignable = clientId;
if (!clientId && mode === 'chrome') {
clientIdAssignable = jsCookie.getJSON('clientId');
}
if (mode === 'chrome') {
subdomain = clientIdAssignable || subdomain;
}
const initialState = {
core: {
token: getCurrentToken(),
widgetConfiguration: void 0,
org: clientIdAssignable,
connectedData: [],
unauthorized: false,
isFetchingConnectedData: true,
},
auth: {
isFetchingLogin: false,
authInfo: void 0,
clientId: (subdomain === 'app') ? void 0 : subdomain,
isFetchingTeamDomain: void 0,
teamDomainInfo: (subdomain === 'app') ? void 0 : { clientId: subdomain, isAvailable: true },
invalidLogin: false,
mode: mode,
clientIds: JSON.parse(jsCookie.get('clientIds') || '[]'),
done: false,
},
};
const reducer = combineReducers(Object.assign({}, reducers));
const store = createStoreWithMiddleware(reducer, initialState);
cluedIn.injectAuth = (DOMElement) => {
ReactDOM.render(
<Provider store={store}>
<IntlProvider locale={localesInfo.locale} messages={localesInfo.messages}>
<MuiThemeProvider>
<App/>
</MuiThemeProvider>
</IntlProvider>
</Provider>,
DOMElement
);
};