Farmbot-Web-App/webpack/redux/middlewares.ts

33 lines
907 B
TypeScript
Raw Normal View History

2017-06-29 12:54:02 -06:00
import thunk from "redux-thunk";
import { applyMiddleware, compose, Middleware } from "redux";
import { EnvName } from "./interfaces";
interface MiddlewareConfig {
fn: Middleware;
env: EnvName;
}
/** To make it easier to manage all things watching the state tree,
* we keep subscriber functions in this array. */
export let mwConfig: MiddlewareConfig[] = [
{
env: "*",
fn: thunk
}
, {
env: "development",
2017-06-30 11:34:06 -06:00
fn: require("redux-immutable-state-invariant").default()
2017-06-29 12:54:02 -06:00
}
];
export function getMiddleware(env: EnvName) {
2017-08-28 05:49:13 -06:00
const middlewareFns = mwConfig
2017-06-29 12:54:02 -06:00
.filter(function (mwc) { return (mwc.env === env) || (mwc.env === "*"); })
.map((mwc) => mwc.fn);
2017-08-28 13:54:47 -06:00
const dtCompose = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;
2017-06-29 12:54:02 -06:00
const composeEnhancers = dtCompose || compose;
2017-08-28 05:49:13 -06:00
const middlewares = applyMiddleware(...middlewareFns);
2017-06-29 12:54:02 -06:00
return composeEnhancers(middlewares);
}