@@ -2,6 +2,8 @@ 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' ;
6
+ import wrapStore from './storeWrapper' ;
5
7
6
8
import curry from 'lodash.curry' ;
7
9
import isFunction from 'lodash.isfunction' ;
@@ -20,6 +22,14 @@ export default function ngReduxProvider() {
20
22
let _storeEnhancers = undefined ;
21
23
let _initialState = undefined ;
22
24
let _reducerIsObject = undefined ;
25
+ let _providedStore = undefined ;
26
+
27
+ this . provideStore = ( store , middlewares = [ ] , storeEnhancers ) => {
28
+ _providedStore = store ;
29
+ _reducer = ( state , action ) => action . payload ;
30
+ _storeEnhancers = storeEnhancers ;
31
+ _middlewares = [ ...middlewares , providedStoreMiddleware ( store ) ] ;
32
+ }
23
33
24
34
this . createStoreWith = ( reducer , middlewares , storeEnhancers , initialState ) => {
25
35
invariant (
@@ -36,7 +46,7 @@ export default function ngReduxProvider() {
36
46
37
47
_reducer = reducer ;
38
48
_reducerIsObject = isObject ( reducer ) ;
39
- _storeEnhancers = storeEnhancers
49
+ _storeEnhancers = storeEnhancers ;
40
50
_middlewares = middlewares || [ ] ;
41
51
_initialState = initialState ;
42
52
} ;
@@ -79,7 +89,11 @@ export default function ngReduxProvider() {
79
89
? applyMiddleware ( ...resolvedMiddleware ) ( finalCreateStore ) ( _reducer , _initialState )
80
90
: applyMiddleware ( ...resolvedMiddleware ) ( finalCreateStore ) ( _reducer ) ;
81
91
82
- return assign ( { } , store , { connect : Connector ( store ) } ) ;
92
+ const mergedStore = assign ( { } , store , { connect : Connector ( store ) } ) ;
93
+
94
+ if ( _providedStore ) wrapStore ( _providedStore , mergedStore ) ;
95
+
96
+ return mergedStore ;
83
97
} ;
84
98
85
99
this . $get . $inject = [ '$injector' ] ;
0 commit comments