/* eslint-disable global-require */ /* eslint-disable no-undef */ import { compose } from "redux"; import persistState from "redux-localstorage"; import { StoreEnhancer } from "redux"; import { routerMiddleware } from "connected-react-router"; import { createBrowserHistory } from "history"; import { createEpicMiddleware } from "redux-observable"; import { createStore, applyMiddleware } from "redux"; import rootEpic from "./epics"; import rootReducer from "./reducers"; import { FirebaseUser } from "../auth/logic/User"; export const history = createBrowserHistory(); declare global { interface Window { __REDUX_DEVTOOLS_EXTENSION_COMPOSE__: any; } } const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; const epicMiddleware = createEpicMiddleware({ dependencies: { user: new FirebaseUser(), }, }); const rootEnhacer: StoreEnhancer = composeEnhancer( applyMiddleware(routerMiddleware(history), epicMiddleware), persistState(undefined, "token") ); const store = createStore(rootReducer(history), rootEnhacer); epicMiddleware.run(rootEpic); export const dispatch = store.dispatch; export default store;