Skip to content

Instantly share code, notes, and snippets.

@faceyspacey
Created August 8, 2017 06:37
Show Gist options
  • Save faceyspacey/c42b4deaa9d34ce8bae93da3aa9f6cd3 to your computer and use it in GitHub Desktop.
Save faceyspacey/c42b4deaa9d34ce8bae93da3aa9f6cd3 to your computer and use it in GitHub Desktop.
redux-first router server/configureStore.js (simple)
import createHistory from 'history/createMemoryHistory'
import { NOT_FOUND } from 'redux-first-router'
import configureStore from '../src/configureStore'
export default async (req, res) => {
const history = createHistory({ initialEntries: [req.path] })
const { store, thunk } = configureStore(history)
// perhaps request + dispatch app-wide state as well:
// await Promise.all([ store.dispatch(myThunkA), store.dispatch(myThunkB) ])
await thunk(store) // THE PAYOFF!
let location = store.getState().location
if (doesRedirect(location, res)) return false
const status = location.type === NOT_FOUND ? 404 : 200
res.status(status)
return store
}
const doesRedirect = ({ kind, pathname }, res) => {
if (kind === 'redirect') {
res.redirect(302, pathname)
return true
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment