You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/state/createStore.ts

48 lines
1.3 KiB
TypeScript

/* eslint-disable no-console */
import storage from 'redux-persist/lib/storage';
import { configureStore } from '@reduxjs/toolkit';
import { createLogger } from 'redux-logger';
import { persistReducer } from 'redux-persist';
import promiseMiddleware from 'redux-promise-middleware';
import { rootReducer } from './reducer';
// So Redux logging doesn't go to disk, and so we can get colors/styles
const directConsole = {
log: (console as any)._log,
groupCollapsed: console.groupCollapsed,
group: console.group,
groupEnd: console.groupEnd,
warn: console.warn,
error: console.error,
};
const logger = createLogger({
logger: directConsole,
});
const persistConfig = {
key: 'root',
storage,
whitelist: ['userConfig'],
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
// Exclude logger if we're in production mode
const disableLogging = true;
const middlewareList = disableLogging ? [promiseMiddleware] : [logger, promiseMiddleware];
export const createStore = (initialState: any) =>
configureStore({
reducer: persistedReducer,
preloadedState: initialState,
middleware: (getDefaultMiddleware: any) =>
getDefaultMiddleware({
serializableCheck: true,
immutableCheck: true,
}).concat(middlewareList),
});