mirror of
https://github.com/TheGreyDiamond/Enlight.git
synced 2026-03-31 23:00:24 +02:00
init
This commit is contained in:
47
enlightApp/app/store.ts
Normal file
47
enlightApp/app/store.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { configureStore, getDefaultMiddleware, Action } from '@reduxjs/toolkit';
|
||||
import { createHashHistory } from 'history';
|
||||
import { routerMiddleware } from 'connected-react-router';
|
||||
import { createLogger } from 'redux-logger';
|
||||
import { ThunkAction } from 'redux-thunk';
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
import createRootReducer from './rootReducer';
|
||||
|
||||
export const history = createHashHistory();
|
||||
const rootReducer = createRootReducer(history);
|
||||
export type RootState = ReturnType<typeof rootReducer>;
|
||||
|
||||
const router = routerMiddleware(history);
|
||||
const middleware = [...getDefaultMiddleware(), router];
|
||||
|
||||
const excludeLoggerEnvs = ['test', 'production'];
|
||||
const shouldIncludeLogger = !excludeLoggerEnvs.includes(
|
||||
process.env.NODE_ENV || ''
|
||||
);
|
||||
|
||||
if (shouldIncludeLogger) {
|
||||
const logger = createLogger({
|
||||
level: 'info',
|
||||
collapsed: true,
|
||||
});
|
||||
middleware.push(logger);
|
||||
}
|
||||
|
||||
export const configuredStore = (initialState?: RootState) => {
|
||||
// Create Store
|
||||
const store = configureStore({
|
||||
reducer: rootReducer,
|
||||
middleware,
|
||||
preloadedState: initialState,
|
||||
});
|
||||
|
||||
if (process.env.NODE_ENV === 'development' && module.hot) {
|
||||
module.hot.accept(
|
||||
'./rootReducer',
|
||||
// eslint-disable-next-line global-require
|
||||
() => store.replaceReducer(require('./rootReducer').default)
|
||||
);
|
||||
}
|
||||
return store;
|
||||
};
|
||||
export type Store = ReturnType<typeof configuredStore>;
|
||||
export type AppThunk = ThunkAction<void, RootState, unknown, Action<string>>;
|
||||
Reference in New Issue
Block a user