Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| import './es6-shims'; | |
| import Rx from 'rx'; | |
| import React from 'react'; | |
| import debug from 'debug'; | |
| import { Router } from 'react-router'; | |
| import { routeReducer as routing, syncHistory } from 'react-router-redux'; | |
| import { createLocation, createHistory } from 'history'; | |
| import app$ from '../common/app'; | |
| import provideStore from '../common/app/provide-store'; | |
| // client specific sagas | |
| import sagas from './sagas'; | |
| // render to observable | |
| import render from '../common/app/utils/render'; | |
| const log = debug('fcc:client'); | |
| const DOMContianer = document.getElementById('fcc'); | |
| const initialState = window.__fcc__.data; | |
| const serviceOptions = { xhrPath: '/services' }; | |
| Rx.config.longStackSupport = !!debug.enabled; | |
| const history = createHistory(); | |
| const appLocation = createLocation( | |
| location.pathname + location.search | |
| ); | |
| const routingMiddleware = syncHistory(history); | |
| const devTools = window.devToolsExtension ? window.devToolsExtension() : f => f; | |
| const shouldRouterListenForReplays = !!window.devToolsExtension; | |
| const clientSagaOptions = { doc: document }; | |
| // returns an observable | |
| app$({ | |
| location: appLocation, | |
| history, | |
| serviceOptions, | |
| initialState, | |
| middlewares: [ | |
| routingMiddleware, | |
| ...sagas.map(saga => saga(clientSagaOptions)) | |
| ], | |
| reducers: { routing }, | |
| enhancers: [ devTools ] | |
| }) | |
| .flatMap(({ props, store }) => { | |
| // because of weirdness in react-routers match function | |
| // we replace the wrapped returned in props with the first one | |
| // we passed in. This might be fixed in react-router 2.0 | |
| props.history = history; | |
| if (shouldRouterListenForReplays && store) { | |
| log('routing middleware listening for replays'); | |
| routingMiddleware.listenForReplays(store); | |
| } | |
| log('rendering'); | |
| return render( | |
| provideStore(React.createElement(Router, props), store), | |
| DOMContianer | |
| ); | |
| }) | |
| .subscribe( | |
| () => debug('react rendered'), | |
| err => { throw err; }, | |
| () => debug('react closed subscription') | |
| ); |