@@ -2,6 +2,7 @@ import Connector from './connector';
2
2
import invariant from 'invariant' ;
3
3
import { createStore , applyMiddleware , compose , combineReducers } from 'redux' ;
4
4
import digestMiddleware from './digestMiddleware' ;
5
+ import providedStoreMiddleware from './providedStoreMiddleware' ;
5
6
import wrapStore from './storeWrapper' ;
6
7
7
8
import curry from 'lodash.curry' ;
@@ -25,6 +26,8 @@ export default function ngReduxProvider() {
25
26
26
27
this . provideStore = ( store ) => {
27
28
_providedStore = store ;
29
+ _reducer = ( state , action ) => action . payload ;
30
+ _middlewares = [ providedStoreMiddleware ( _providedStore ) ] ;
28
31
}
29
32
30
33
this . createStoreWith = ( reducer , middlewares , storeEnhancers , initialState ) => {
@@ -48,56 +51,46 @@ export default function ngReduxProvider() {
48
51
} ;
49
52
50
53
this . $get = ( $injector ) => {
51
- if ( _providedStore ) {
52
- const emptyStore = createNgReduxStore ( $injector , [ ] , [ ] , state => state , undefined ) ;
54
+ const resolveMiddleware = middleware => isString ( middleware )
55
+ ? $injector . get ( middleware )
56
+ : middleware ;
53
57
54
- return wrapStore ( _providedStore , emptyStore ) ;
55
- }
56
-
57
- return createNgReduxStore ( $injector , _middlewares , _storeEnhancers , _reducer , _initialState ) ;
58
-
59
- } ;
60
-
61
- this . $get . $inject = [ '$injector' ] ;
62
- }
58
+ const resolvedMiddleware = map ( _middlewares , resolveMiddleware ) ;
63
59
64
- function createNgReduxStore ( $injector , _middlewares , _storeEnhancers , _reducer , _initialState ) {
65
- const resolveMiddleware = middleware => isString ( middleware )
66
- ? $injector . get ( middleware )
67
- : middleware ;
60
+ const resolveStoreEnhancer = storeEnhancer => isString ( storeEnhancer )
61
+ ? $injector . get ( storeEnhancer )
62
+ : storeEnhancer ;
68
63
69
- const resolvedMiddleware = map ( _middlewares , resolveMiddleware ) ;
64
+ const resolvedStoreEnhancer = map ( _storeEnhancers , resolveStoreEnhancer ) ;
70
65
71
- const resolveStoreEnhancer = storeEnhancer => isString ( storeEnhancer )
72
- ? $injector . get ( storeEnhancer )
73
- : storeEnhancer ;
66
+ if ( _reducerIsObject ) {
67
+ const getReducerKey = key => isString ( _reducer [ key ] )
68
+ ? $injector . get ( _reducer [ key ] )
69
+ : _reducer [ key ] ;
74
70
75
- const resolvedStoreEnhancer = map ( _storeEnhancers , resolveStoreEnhancer ) ;
71
+ const resolveReducerKey = ( result , key ) => assign ( { } , result ,
72
+ { [ key ] : getReducerKey ( key ) }
73
+ ) ;
76
74
77
- if ( _reducerIsObject ) {
78
- const getReducerKey = key => isString ( _reducer [ key ] )
79
- ? $injector . get ( _reducer [ key ] )
80
- : _reducer [ key ] ;
75
+ const reducersObj = Object
76
+ . keys ( _reducer )
77
+ . reduce ( resolveReducerKey , { } ) ;
81
78
82
- const resolveReducerKey = ( result , key ) => assign ( { } , result ,
83
- { [ key ] : getReducerKey ( key ) }
84
- ) ;
85
-
86
- const reducersObj = Object
87
- . keys ( _reducer )
88
- . reduce ( resolveReducerKey , { } ) ;
79
+ _reducer = combineReducers ( reducersObj ) ;
80
+ }
89
81
90
- _reducer = combineReducers ( reducersObj ) ;
91
- }
82
+ const finalCreateStore = resolvedStoreEnhancer ? compose ( ...resolvedStoreEnhancer ) ( createStore ) : createStore ;
92
83
93
- const finalCreateStore = resolvedStoreEnhancer ? compose ( ...resolvedStoreEnhancer ) ( createStore ) : createStore ;
84
+ //digestMiddleware needs to be the last one.
85
+ resolvedMiddleware . push ( digestMiddleware ( $injector . get ( '$rootScope' ) ) ) ;
94
86
95
- //digestMiddleware needs to be the last one.
96
- resolvedMiddleware . push ( digestMiddleware ( $injector . get ( '$rootScope' ) ) ) ;
87
+ const store = applyMiddleware ( ...resolvedMiddleware ) ( finalCreateStore ) ( _reducer , _initialState || undefined )
88
+ const mergedStore = assign ( { } , store , { connect : Connector ( store ) } ) ;
89
+
90
+ if ( _providedStore ) wrapStore ( _providedStore , mergedStore )
97
91
98
- const store = _initialState
99
- ? applyMiddleware ( ...resolvedMiddleware ) ( finalCreateStore ) ( _reducer , _initialState )
100
- : applyMiddleware ( ...resolvedMiddleware ) ( finalCreateStore ) ( _reducer ) ;
92
+ return mergedStore ;
93
+ } ;
101
94
102
- return assign ( { } , store , { connect : Connector ( store ) } ) ;
95
+ this . $get . $inject = [ '$injector' ] ;
103
96
}
0 commit comments