Skip to content

Commit 7f53228

Browse files
committed
Merge pull request #5 from wbuchwalter/1.0.0
Store is now created by ngRedux (allows DI in middleware)
2 parents c384626 + 82d1c61 commit 7f53228

File tree

3 files changed

+40
-8
lines changed

3 files changed

+40
-8
lines changed

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ng-redux",
3-
"version": "0.3.1",
3+
"version": "1.0.0-rc",
44
"description": "Redux bindings for Angular.js",
55
"main": "./lib/index.js",
66
"scripts": {
@@ -25,9 +25,10 @@
2525
"webpack": "^1.10.5"
2626
},
2727
"peerDependencies": {
28-
"redux": "^1.0.0 || 1.0.0-alpha || 1.0.0-rc"
28+
"redux": "^1.0.0"
2929
},
3030
"dependencies": {
31-
"invariant": "^2.1.0"
31+
"invariant": "^2.1.0",
32+
"redux": "^1.0.1"
3233
}
3334
}

src/components/connector.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default function Connector(store) {
1212
invariant(
1313
isFunction(callback),
1414
'The callback parameter passed to connect must be a Function. Instead received %s.',
15-
typeof selector
15+
typeof callback
1616
);
1717

1818
//Initial update

src/components/ngRedux.js

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,41 @@
11
import Connector from './connector';
2+
import invariant from 'invariant';
3+
import isFunction from '../utils/isFunction';
4+
import {createStore, applyMiddleware} from 'redux';
25

36
export default function ngReduxProvider() {
4-
let reduxStore = undefined;
5-
this.setReduxStore = store => reduxStore = store;
7+
let _reducer = undefined;
8+
let _middlewares = [];
9+
let _storeEnhancer = undefined;
610

7-
this.$get = () => {
8-
return Connector(reduxStore);
11+
this.createStoreWith = (reducer, middlewares, storeEnhancer) => {
12+
invariant(
13+
isFunction(reducer),
14+
'The reducer parameter passed to createStoreWith must be a Function. Instead received %s.',
15+
typeof reducer
16+
);
17+
18+
invariant(
19+
!storeEnhancer || isFunction(storeEnhancer),
20+
'The storeEnhancer parameter passed to createStoreWith must be a Function. Instead received %s.',
21+
typeof storeEnhancer
22+
);
23+
24+
_reducer = reducer;
25+
_storeEnhancer = storeEnhancer || createStore;
26+
_middlewares = middlewares;
27+
};
28+
29+
this.$get = ($injector) => {
30+
let resolvedMiddleware = [];
31+
for(let middleware of _middlewares) {
32+
if(typeof middleware === 'string') {
33+
resolvedMiddleware.push($injector.get(middleware));
34+
} else {
35+
resolvedMiddleware.push(middleware);
36+
}
37+
}
38+
39+
return Connector(applyMiddleware(...resolvedMiddleware)(_storeEnhancer)(_reducer));
940
}
1041
}

0 commit comments

Comments
 (0)