Skip to content

Commit f83bc86

Browse files
author
Ville Saukkonen
committed
feat(store creator callback): provide callback for creating store
1 parent b7885cd commit f83bc86

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

Diff for: index.d.ts

+6
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ declare namespace ngRedux {
109109
/* provider */
110110

111111
export interface INgReduxProvider {
112+
/**
113+
* callback for creating Redux store.
114+
*
115+
* @param storeCreator
116+
*/
117+
createStore<S = any>(storeCreator: (middlewares?: (Middleware | string)[], storeEnhancers?: Function[]) => Store<S>): void;
112118
/**
113119
* Creates Redux store.
114120
*

Diff for: src/components/ngRedux.js

+14-5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default function ngReduxProvider() {
2323
let _initialState = undefined;
2424
let _reducerIsObject = undefined;
2525
let _providedStore = undefined;
26+
let _storeCreator = undefined;
2627

2728
this.provideStore = (store, middlewares = [], storeEnhancers) => {
2829
_providedStore = store;
@@ -31,6 +32,10 @@ export default function ngReduxProvider() {
3132
_middlewares = [...middlewares, providedStoreMiddleware(store)];
3233
}
3334

35+
this.createStore = (storeCreator) => {
36+
_storeCreator = storeCreator
37+
};
38+
3439
this.createStoreWith = (reducer, middlewares, storeEnhancers, initialState) => {
3540
invariant(
3641
isFunction(reducer) || isObject(reducer),
@@ -90,11 +95,15 @@ export default function ngReduxProvider() {
9095
// digestMiddleware needs to be the last one.
9196
resolvedMiddleware.push(digestMiddleware($injector.get('$rootScope'), this.config.debounce));
9297

93-
// combine middleware into a store enhancer.
94-
const middlewares = applyMiddleware(...resolvedMiddleware);
95-
96-
// compose enhancers with middleware and create store.
97-
const store = createStore(_reducer, _initialState, compose(middlewares, ...resolvedStoreEnhancer));
98+
let store;
99+
if(_storeCreator) {
100+
store = _storeCreator(resolvedMiddleware, resolvedStoreEnhancer);
101+
} else {
102+
// combine middleware into a store enhancer.
103+
const middlewares = applyMiddleware(...resolvedMiddleware);
104+
// compose enhancers with middleware and create store.
105+
store = createStore(_reducer, _initialState, compose(middlewares, ...resolvedStoreEnhancer));
106+
}
98107

99108
const mergedStore = assign({}, store, { connect: Connector(store) });
100109

0 commit comments

Comments
 (0)