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.
		
		
		
		
		
			
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			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,
 | |
| });
 | |
| 
 | |
| export 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),
 | |
|   });
 |