Total Complexity | 2 |
Complexity/F | 0 |
Lines of Code | 38 |
Function Count | 0 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | import { |
||
2 | applyMiddleware, |
||
3 | createStore, |
||
4 | AnyAction, |
||
5 | Store, |
||
6 | Dispatch, |
||
7 | } from "redux"; |
||
8 | import thunk, { ThunkDispatch } from "redux-thunk"; |
||
9 | import { composeWithDevTools } from "redux-devtools-extension"; |
||
10 | import { createLogger } from "redux-logger"; |
||
11 | import { apiMiddleware } from "redux-api-middleware"; |
||
12 | import rootReducer, { RootState } from "./store/store"; |
||
13 | |||
14 | /** Defining a dispatch for the app that accepts thunks */ |
||
15 | export type DispatchType = Dispatch<AnyAction, RootState> & |
||
16 | ThunkDispatch<any, any, AnyAction>; |
||
17 | |||
18 | export const configureStore = (): Store<RootState, AnyAction> => { |
||
19 | const logger = createLogger({ |
||
20 | collapsed: true, |
||
21 | }); |
||
22 | |||
23 | const isDev = process.env.NODE_ENV === "development"; |
||
24 | |||
25 | let middleware = isDev |
||
26 | ? applyMiddleware(thunk, apiMiddleware, logger) |
||
27 | : applyMiddleware(thunk, apiMiddleware); |
||
28 | |||
29 | if (isDev) { |
||
30 | middleware = composeWithDevTools(middleware); |
||
31 | } |
||
32 | |||
33 | const reducer = rootReducer(); |
||
34 | return createStore(reducer, middleware); |
||
35 | }; |
||
36 | |||
37 | export default configureStore; |
||
38 |