openreplay/frontend/app/duck/tools/index.js
2021-05-01 15:12:01 +05:30

19 lines
708 B
JavaScript

import { Map } from 'immutable';
export function reduceReducers(...args) {
const initialState = args[ args.length - 1 ];
const reducers = args.slice(0, -1);
return (state = initialState, action) =>
reducers.reduce((accumState, reducer) => reducer(accumState, action), state);
}
export function reduceDucks(...ducks) {
const accumulatedInitialState = ducks
.reduce((accumState, { initialState }) => accumState.merge(initialState), Map());
const accumulatedReducer = (state = accumulatedInitialState, action) =>
ducks.reduce((accumState, { reducer }) => reducer(accumState, action), state);
return {
initialState: accumulatedInitialState,
reducer: accumulatedReducer,
};
}