|
1 | 1 | import { applyMiddleware, createStore, Store } from "redux";
|
2 |
| -import reduxImmutableStateInvarient from "redux-immutable-state-invariant"; |
3 |
| -import { createLogger } from "redux-logger"; |
4 | 2 | import thunk from "redux-thunk";
|
5 | 3 | import rootReducer from "../reducers";
|
6 | 4 | import { IApplicationState } from "../../models/applicationState";
|
7 |
| -import { createLocalStorage, mergeInitialState } from "../middleware/localStorage"; |
| 5 | +import { mergeInitialState } from "../middleware/localStorage"; |
| 6 | +import { Env } from "../../common/environment"; |
8 | 7 |
|
9 | 8 | /**
|
10 |
| - * Creates initial redux store from initial aplication state |
| 9 | + * Creates initial redux store from initial application state |
11 | 10 | * @param initialState - Initial state of application
|
12 | 11 | * @param useLocalStorage - Whether or not to use localStorage middleware
|
13 | 12 | */
|
14 | 13 | export default function createReduxStore(
|
15 | 14 | initialState?: IApplicationState,
|
16 | 15 | useLocalStorage: boolean = false): Store {
|
17 | 16 | const paths: string[] = ["appSettings", "connections", "recentProjects"];
|
18 |
| - const middlewares = useLocalStorage |
19 |
| - ? applyMiddleware(thunk, reduxImmutableStateInvarient(), createLogger(), createLocalStorage({ paths })) |
20 |
| - : applyMiddleware(thunk, reduxImmutableStateInvarient(), createLogger()); |
| 17 | + |
| 18 | + let middlewares = [thunk]; |
| 19 | + |
| 20 | + if (useLocalStorage) { |
| 21 | + const localStorage = require("../middleware/localStorage"); |
| 22 | + const storage = localStorage.createLocalStorage({paths}); |
| 23 | + middlewares = [ |
| 24 | + ...middlewares, |
| 25 | + storage, |
| 26 | + ]; |
| 27 | + } |
| 28 | + |
| 29 | + if (Env.get() === "development") { |
| 30 | + const logger = require("redux-logger"); |
| 31 | + const reduxImmutableStateInvariant = require("redux-immutable-state-invariant"); |
| 32 | + middlewares = [ |
| 33 | + ...middlewares, |
| 34 | + reduxImmutableStateInvariant.default(), |
| 35 | + logger.createLogger(), |
| 36 | + ]; |
| 37 | + } |
21 | 38 |
|
22 | 39 | return createStore(
|
23 | 40 | rootReducer,
|
24 | 41 | useLocalStorage ? mergeInitialState(initialState, paths) : initialState,
|
25 |
| - middlewares, |
| 42 | + applyMiddleware(...middlewares), |
26 | 43 | );
|
27 | 44 | }
|
0 commit comments