summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/src/store/configure-store.js
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-web/opendc-web-ui/src/store/configure-store.js')
-rw-r--r--opendc-web/opendc-web-ui/src/store/configure-store.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/opendc-web/opendc-web-ui/src/store/configure-store.js b/opendc-web/opendc-web-ui/src/store/configure-store.js
new file mode 100644
index 00000000..d8f343ed
--- /dev/null
+++ b/opendc-web/opendc-web-ui/src/store/configure-store.js
@@ -0,0 +1,35 @@
+import { applyMiddleware, compose, createStore } from 'redux'
+import persistState from 'redux-localstorage'
+import { createLogger } from 'redux-logger'
+import createSagaMiddleware from 'redux-saga'
+import thunk from 'redux-thunk'
+import { authRedirectMiddleware } from '../auth/index'
+import rootReducer from '../reducers/index'
+import rootSaga from '../sagas/index'
+import { dummyMiddleware } from './middlewares/dummy-middleware'
+import { viewportAdjustmentMiddleware } from './middlewares/viewport-adjustment'
+
+const sagaMiddleware = createSagaMiddleware()
+
+let logger
+if (process.env.NODE_ENV !== 'production') {
+ logger = createLogger()
+}
+
+const middlewares = [
+ process.env.NODE_ENV === 'production' ? dummyMiddleware : logger,
+ thunk,
+ sagaMiddleware,
+ authRedirectMiddleware,
+ viewportAdjustmentMiddleware,
+]
+
+export let store = undefined
+
+export default function configureStore() {
+ const configuredStore = createStore(rootReducer, compose(persistState('auth'), applyMiddleware(...middlewares)))
+ sagaMiddleware.run(rootSaga)
+ store = configuredStore
+
+ return configuredStore
+}