64 lines
2.4 KiB
JavaScript
64 lines
2.4 KiB
JavaScript
// node_modules
|
|
import React from 'react'
|
|
import ReactDOM from 'react-dom'
|
|
import { createStore, applyMiddleware } from 'redux'
|
|
import { Provider } from 'react-redux'
|
|
import { Route, Redirect, Switch } from 'react-router'
|
|
import { ConnectedRouter, routerReducer, routerMiddleware, push } from 'react-router-redux'
|
|
import createHistory from 'history/createBrowserHistory'
|
|
import 'bootstrap'
|
|
|
|
// src modules
|
|
import Navbar from './components/navbar'
|
|
import reduceJoyce from './reducers/reduceJoyce'
|
|
import actions from './actions'
|
|
import { logger, joyceAPI, joyceInterface, joyceRouter } from './middleware/'
|
|
import ReaderPageContainer from './containers/readerPageContainer'
|
|
import EditorPageContainer from './containers/editorPageContainer'
|
|
import SearchPageContainer from './containers/searchPageContainer'
|
|
import AdminHeader from './components/adminHeader'
|
|
|
|
const history = createHistory()
|
|
const router = routerMiddleware(history)
|
|
const store = createStore(reduceJoyce,
|
|
applyMiddleware(logger, router, joyceAPI, joyceInterface, joyceRouter))
|
|
const state = store.getState()
|
|
|
|
store.dispatch(actions.getDocumentList({docType: 'chapters'}))
|
|
store.dispatch(actions.getDocumentList({docType: 'notes'}))
|
|
store.dispatch(actions.getDocumentList({docType: 'tags'}))
|
|
|
|
ReactDOM.render(
|
|
<Provider store={store}>
|
|
<ConnectedRouter history={history}>
|
|
<div>
|
|
<AdminHeader toggles={state.toggles} hideAdmin={()=>store.dispatch(actions.hideAdmin())}/>
|
|
<Navbar />
|
|
<Switch>
|
|
<Route exact path='/' render={() =>
|
|
<Redirect to={'/:id'}/>
|
|
}/>
|
|
<Route exact path='/edit' render={() =>
|
|
<Redirect to={'/edit/:id'}/>
|
|
}/>
|
|
<Route exact path='/edit/notes' render={() =>
|
|
<Redirect to={'/edit/notes/:id'}/>
|
|
}/>
|
|
<Route exact path='/edit/tags' render={() =>
|
|
<Redirect to={'/edit/tags/:id'}/>
|
|
}/>
|
|
<Route exact path='/notes' render={() =>
|
|
<Redirect to={'/notes/:id'}/>
|
|
}/>
|
|
<Route exact path='/notes/:id' component={ReaderPageContainer} />
|
|
<Route exact path='/edit/:id' component={EditorPageContainer} />
|
|
<Route exact path='/edit/notes/:id' component={EditorPageContainer} />
|
|
<Route exact path='/edit/tags/:id' component={EditorPageContainer} />
|
|
<Route exact path='/search/' component={SearchPageContainer} />
|
|
<Route exact path='/:id' component={ReaderPageContainer} />
|
|
</Switch>
|
|
</div>
|
|
</ConnectedRouter>
|
|
</Provider>,
|
|
document.getElementById('wrapper')
|
|
) |