19 lines
708 B
JavaScript
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,
|
|
};
|
|
}
|