shlink-web-client/src/container/store.ts

26 lines
1 KiB
TypeScript
Raw Normal View History

2023-02-18 13:11:01 +03:00
import { configureStore } from '@reduxjs/toolkit';
2023-02-18 12:40:37 +03:00
import type { IContainer } from 'bottlejs';
import type { RLSOptions } from 'redux-localstorage-simple';
2023-02-18 13:11:01 +03:00
import { load, save } from 'redux-localstorage-simple';
2023-02-18 13:37:49 +03:00
import { initReducers } from '../reducers';
import { migrateDeprecatedSettings } from '../settings/helpers';
2023-02-18 12:40:37 +03:00
import type { ShlinkState } from './types';
const isProduction = process.env.NODE_ENV === 'production';
2020-08-22 09:47:19 +03:00
const localStorageConfig: RLSOptions = {
2022-03-26 14:17:42 +03:00
states: ['settings', 'servers'],
namespace: 'shlink',
namespaceSeparator: '.',
2020-05-03 21:16:21 +03:00
debounce: 300,
};
const preloadedState = migrateDeprecatedSettings(load(localStorageConfig) as ShlinkState);
export const setUpStore = (container: IContainer) => configureStore({
devTools: !isProduction,
2023-02-18 13:37:49 +03:00
reducer: initReducers(container),
preloadedState,
2022-11-11 21:31:05 +03:00
middleware: (defaultMiddlewaresIncludingReduxThunk) =>
2022-11-12 19:51:37 +03:00
defaultMiddlewaresIncludingReduxThunk({ immutableCheck: false, serializableCheck: false }) // State is too big for these
2022-11-11 21:31:05 +03:00
.concat(save(localStorageConfig)),
});