summaryrefslogtreecommitdiffstats
path: root/front/odiparpack/app/utils/reducerInjectors.js
diff options
context:
space:
mode:
authorgabrhr <[email protected]>2022-04-20 10:19:29 -0500
committergabrhr <[email protected]>2022-04-20 10:19:29 -0500
commite13e630cd6e4fc0b1ff92098a28a770794c7bb9a (patch)
treee68ad2f947d1b3ec454529b35f37ca2f223e5431 /front/odiparpack/app/utils/reducerInjectors.js
parent457816ac1129fcc6019d2fc795b6693ee6776d59 (diff)
downloadDP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.tar.gz
DP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.tar.bz2
DP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.zip
AƱadir plantilla
Base para front
Diffstat (limited to 'front/odiparpack/app/utils/reducerInjectors.js')
-rw-r--r--front/odiparpack/app/utils/reducerInjectors.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/front/odiparpack/app/utils/reducerInjectors.js b/front/odiparpack/app/utils/reducerInjectors.js
new file mode 100644
index 0000000..d664680
--- /dev/null
+++ b/front/odiparpack/app/utils/reducerInjectors.js
@@ -0,0 +1,33 @@
+import invariant from 'invariant';
+import { isEmpty, isFunction, isString } from 'lodash';
+
+import checkStore from './checkStore';
+import createReducer from '../redux/reducers';
+
+export function injectReducerFactory(store, isValid) {
+ return function injectReducer(key, reducer) {
+ if (!isValid) checkStore(store);
+
+ invariant(
+ isString(key) && !isEmpty(key) && isFunction(reducer),
+ '(app/utils...) injectReducer: Expected `reducer` to be a reducer function',
+ );
+
+ // Check `store.injectedReducers[key] === reducer` for hot reloading when a key is the same but a reducer is different
+ if (
+ Reflect.has(store.injectedReducers, key)
+ && store.injectedReducers[key] === reducer
+ ) return;
+
+ store.injectedReducers[key] = reducer; // eslint-disable-line no-param-reassign
+ store.replaceReducer(createReducer(store.injectedReducers));
+ };
+}
+
+export default function getInjectors(store) {
+ checkStore(store);
+
+ return {
+ injectReducer: injectReducerFactory(store, true),
+ };
+}