diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-05-16 17:07:58 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-05-17 17:06:50 +0200 |
| commit | d9e65dceb38cdb8dc4e464d388755f9456620566 (patch) | |
| tree | dbc369de8c4a0effce95ca4a54ff6dbfad2b47f5 /opendc-web/opendc-web-ui/src/store/configure-store.js | |
| parent | 1edbae1a0224e30bafb98638f419e1f967a9286f (diff) | |
ui: Restructure OpenDC frontend
This change updates the structure of the OpenDC frontend in order to
improve the maintainability of the frontend.
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.js | 60 |
1 files changed, 0 insertions, 60 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 deleted file mode 100644 index 149536a3..00000000 --- a/opendc-web/opendc-web-ui/src/store/configure-store.js +++ /dev/null @@ -1,60 +0,0 @@ -import { useMemo } from 'react' -import { applyMiddleware, compose, createStore } from 'redux' -import { createLogger } from 'redux-logger' -import persistState from 'redux-localstorage' -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 { viewportAdjustmentMiddleware } from './middlewares/viewport-adjustment' - -let store - -function initStore(initialState) { - const sagaMiddleware = createSagaMiddleware() - - const middlewares = [thunk, sagaMiddleware, authRedirectMiddleware, viewportAdjustmentMiddleware] - - if (process.env.NODE_ENV !== 'production') { - middlewares.push(createLogger()) - } - - let enhancer = applyMiddleware(...middlewares) - - if (global.localStorage) { - enhancer = compose(persistState('auth'), enhancer) - } - - const configuredStore = createStore(rootReducer, enhancer) - sagaMiddleware.run(rootSaga) - store = configuredStore - - return configuredStore -} - -export const initializeStore = (preloadedState) => { - let _store = store ?? initStore(preloadedState) - - // After navigating to a page with an initial Redux state, merge that state - // with the current state in the store, and create a new store - if (preloadedState && store) { - _store = initStore({ - ...store.getState(), - ...preloadedState, - }) - // Reset the current store - store = undefined - } - - // For SSG and SSR always create a new store - if (typeof window === 'undefined') return _store - // Create the store once in the client - if (!store) store = _store - - return _store -} - -export function useStore(initialState) { - return useMemo(() => initializeStore(initialState), [initialState]) -} |
