Skip to content

Instantly share code, notes, and snippets.

@goldoraf
Created October 25, 2017 08:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save goldoraf/399d0d5d4d0347aaaf34605283cf46aa to your computer and use it in GitHub Desktop.
Save goldoraf/399d0d5d4d0347aaaf34605283cf46aa to your computer and use it in GitHub Desktop.
/* global __DEVELOPMENT__, __TARGET__ */
import { compose, createStore, applyMiddleware } from 'redux'
import {
shouldEnableTracking,
getTracker,
createTrackerMiddleware
} from 'cozy-ui/react/helpers/tracker'
import { cozyMiddleware } from 'cozy-client'
import thunkMiddleware from 'redux-thunk'
import eventTrackerMiddleware from '../middlewares/EventTracker'
import rootReducer from '../reducers'
import { createLogger } from 'redux-logger'
const configureStore = (client, initialState = {}) => {
const middlewares = [cozyMiddleware(client), thunkMiddleware]
if (__TARGET__ === 'mobile') {
middlewares.push(RavenMiddleWare(
ANALYTICS_URL,
getReporterConfiguration()
))
}
if (shouldEnableTracking() && getTracker()) {
middlewares.push(eventTrackerMiddleware)
middlewares.push(createTrackerMiddleware())
}
middlewares.push(createLogger(loggerOptions))
// Enable Redux dev tools
const composeEnhancers =
(__DEVELOPMENT__ && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose
const store = createStore(
rootReducer,
initialState,
composeEnhancers(applyMiddleware(...middlewares))
)
if (__TARGET__ === 'mobile') {
store.subscribe(() =>
saveState({
settings: store.getState().settings,
mobile: {
settings: store.getState().mobile.settings,
mediaBackup: {
uploaded: store.getState().mobile.mediaBackup.uploaded
}
},
availableOffline: store.getState().availableOffline
})
)
}
return store
}
const loggerOptions = () =>
__DEVELOPMENT__
? {}
: {
level: {
prevState: false,
nextState: false
}
}
export default configureStore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment