UNPKG

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
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 ); };