Skip to content

Commit 54c0e45

Browse files
committed
Break up some list operations in ngRedux
1 parent d8c0bbc commit 54c0e45

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

src/components/ngRedux.js

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@ import {createStore, applyMiddleware, compose, combineReducers} from 'redux';
44
import digestMiddleware from './digestMiddleware';
55

66
import assign from 'lodash.assign';
7+
import curry from 'lodash.curry';
78
import isArray from 'lodash.isarray';
89
import isFunction from 'lodash.isfunction';
10+
import map from 'lodash.map';
911

10-
const isObject = x => typeof x === 'object';
12+
const typeIs = curry((type, val) => typeof val === type);
13+
const isObject = typeIs('object');
14+
const isString = typeIs('string');
1115

1216
export default function ngReduxProvider() {
1317
let _reducer = undefined;
@@ -37,37 +41,34 @@ export default function ngReduxProvider() {
3741
};
3842

3943
this.$get = ($injector) => {
40-
let store, resolvedMiddleware = [];
41-
42-
for(let middleware of _middlewares) {
43-
if(typeof middleware === 'string') {
44-
resolvedMiddleware.push($injector.get(middleware));
45-
} else {
46-
resolvedMiddleware.push(middleware);
47-
}
48-
}
44+
const resolveMiddleware = middleware => isString(middleware)
45+
? $injector.get(middleware)
46+
: middleware;
47+
48+
const resolvedMiddleware = map(_middlewares, resolveMiddleware);
4949

5050
if(_reducerIsObject) {
51-
let reducersObj = {};
52-
let reducKeys = Object.keys(_reducer);
51+
const getReducerKey = key => isString(key)
52+
? $injector.get(_reducer[key])
53+
: _reducer[key];
54+
55+
const resolveReducerKey = (result, key) => assign({}, result,
56+
{ [key]: getReducerKey(key) }
57+
);
5358

54-
reducKeys.forEach((key) => {
55-
if(typeof _reducer[key] === 'string') {
56-
reducersObj[key] = $injector.get(_reducer[key]);
57-
} else {
58-
reducersObj[key] = _reducer[key];
59-
}
60-
});
59+
const reducersObj = Object
60+
.keys(_reducer)
61+
.reduce(resolveReducerKey, {});
6162

6263
_reducer = combineReducers(reducersObj);
6364
}
6465

65-
let finalCreateStore = _storeEnhancers ? compose(..._storeEnhancers)(createStore) : createStore;
66+
const finalCreateStore = _storeEnhancers ? compose(..._storeEnhancers)(createStore) : createStore;
6667

6768
//digestMiddleware needs to be the last one.
6869
resolvedMiddleware.push(digestMiddleware($injector.get('$rootScope')));
6970

70-
store = _initialState
71+
const store = _initialState
7172
? applyMiddleware(...resolvedMiddleware)(finalCreateStore)(_reducer, _initialState)
7273
: applyMiddleware(...resolvedMiddleware)(finalCreateStore)(_reducer);
7374

0 commit comments

Comments
 (0)