11import Connector from './connector' ;
22import invariant from 'invariant' ;
33import isFunction from '../utils/isFunction' ;
4- import { createStore , applyMiddleware } from 'redux' ;
4+ import { createStore , applyMiddleware , compose } from 'redux' ;
5+ import digestMiddleware from './digestMiddleware' ;
56
67export default function ngReduxProvider ( ) {
78 let _reducer = undefined ;
89 let _middlewares = [ ] ;
9- let _storeEnhancer = undefined ;
10+ let _storeEnhancers = undefined ;
1011
11- this . createStoreWith = ( reducer , middlewares , storeEnhancer ) => {
12+ this . createStoreWith = ( reducer , middlewares , storeEnhancers ) => {
1213 invariant (
1314 isFunction ( reducer ) ,
1415 'The reducer parameter passed to createStoreWith must be a Function. Instead received %s.' ,
1516 typeof reducer
1617 ) ;
1718
1819 invariant (
19- ! storeEnhancer || isFunction ( storeEnhancer ) ,
20- 'The storeEnhancer parameter passed to createStoreWith must be a Function . Instead received %s.' ,
21- typeof storeEnhancer
20+ ! storeEnhancers || Array . isArray ( storeEnhancers ) ,
21+ 'The storeEnhancers parameter passed to createStoreWith must be an Array . Instead received %s.' ,
22+ typeof storeEnhancers
2223 ) ;
2324
2425 _reducer = reducer ;
25- _storeEnhancer = storeEnhancer || createStore ;
26+ _storeEnhancers = storeEnhancers
2627 _middlewares = middlewares ;
2728 } ;
2829
@@ -37,7 +38,11 @@ export default function ngReduxProvider() {
3738 }
3839 }
3940
40- store = applyMiddleware ( ...resolvedMiddleware ) ( _storeEnhancer ) ( _reducer ) ;
41+ let finalCreateStore = _storeEnhancers ? compose ( ..._storeEnhancers , createStore ) : createStore ;
42+
43+ resolvedMiddleware . push ( digestMiddleware ( $injector . get ( '$rootScope' ) ) ) ;
44+
45+ store = applyMiddleware ( ...resolvedMiddleware ) ( finalCreateStore ) ( _reducer ) ;
4146
4247 return {
4348 ...store ,
0 commit comments