2017-01-04 14:31:38 +01:00
|
|
|
import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
|
|
|
|
|
2017-01-31 10:21:09 +08:00
|
|
|
export const configureStore = (reducers, initialState = {}, middlewares) => createStore(
|
2017-01-26 12:41:02 +08:00
|
|
|
// reducers
|
2017-01-04 14:31:38 +01:00
|
|
|
combineReducers(reducers),
|
|
|
|
// initial state
|
|
|
|
initialState,
|
2017-02-06 14:33:34 +08:00
|
|
|
// middlewares
|
2017-01-04 14:31:38 +01:00
|
|
|
compose(
|
2017-01-31 10:21:09 +08:00
|
|
|
applyMiddleware(...middlewares),
|
2017-01-04 14:31:38 +01:00
|
|
|
typeof window !== "undefined" && window.devToolsExtension ? window.devToolsExtension() : f => f
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
2017-01-26 12:41:02 +08:00
|
|
|
let actions = {};
|
2017-01-04 14:31:38 +01:00
|
|
|
export const addAction = addedAction => {
|
2017-01-26 12:41:02 +08:00
|
|
|
actions = {...actions, ...addedAction};
|
|
|
|
|
|
|
|
return actions;
|
2017-01-04 14:31:38 +01:00
|
|
|
};
|
2017-01-26 12:41:02 +08:00
|
|
|
export const getActions = () => actions;
|
2017-01-04 14:31:38 +01:00
|
|
|
|
2017-01-26 12:41:02 +08:00
|
|
|
let reducers = {};
|
2017-01-04 14:31:38 +01:00
|
|
|
export const addReducer = addedReducer => {
|
2017-01-26 12:41:02 +08:00
|
|
|
reducers = {...reducers, ...addedReducer};
|
|
|
|
|
|
|
|
return reducers;
|
2017-01-04 14:31:38 +01:00
|
|
|
};
|
2017-01-26 12:41:02 +08:00
|
|
|
export const getReducers = () => reducers;
|
2017-01-04 14:31:38 +01:00
|
|
|
|
2017-01-31 10:21:09 +08:00
|
|
|
let middlewares = [];
|
2017-01-04 14:31:38 +01:00
|
|
|
export const addMiddleware = middlewareOrMiddlewareArray => {
|
|
|
|
const addedMiddleware = Array.isArray(middlewareOrMiddlewareArray) ? middlewareOrMiddlewareArray : [middlewareOrMiddlewareArray];
|
2017-01-26 12:41:02 +08:00
|
|
|
|
2017-01-31 10:21:09 +08:00
|
|
|
middlewares = [...middlewares, ...addedMiddleware];
|
2017-01-26 12:41:02 +08:00
|
|
|
|
2017-01-31 10:21:09 +08:00
|
|
|
return middlewares;
|
2017-01-04 14:31:38 +01:00
|
|
|
};
|
2017-01-31 10:21:09 +08:00
|
|
|
export const getMiddlewares = () => middlewares;
|