2023-03-10 22:00:37 +00:00
|
|
|
import { configureStore } from '@reduxjs/toolkit';
|
|
|
|
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';
|
|
|
|
import storage from 'redux-persist/lib/storage';
|
|
|
|
import { persistReducer, persistStore } from 'redux-persist';
|
|
|
|
import messageReducer from './message';
|
2023-03-14 11:00:40 +00:00
|
|
|
import uiReducer from './ui';
|
2023-04-15 10:30:02 +00:00
|
|
|
import settingsUIReducer from './settings-ui';
|
2023-03-14 11:00:40 +00:00
|
|
|
import sidebarReducer from './sidebar';
|
2023-03-10 22:00:37 +00:00
|
|
|
|
|
|
|
const persistConfig = {
|
|
|
|
key: 'root',
|
|
|
|
storage,
|
|
|
|
}
|
|
|
|
|
2023-03-14 11:00:40 +00:00
|
|
|
const persistSidebarConfig = {
|
|
|
|
key: 'sidebar',
|
|
|
|
storage,
|
|
|
|
}
|
|
|
|
|
2023-03-17 03:03:11 +00:00
|
|
|
const persistMessageConfig = {
|
|
|
|
key: 'message',
|
|
|
|
storage,
|
|
|
|
}
|
|
|
|
|
2023-03-18 12:49:30 +00:00
|
|
|
|
|
|
|
|
2023-03-10 22:00:37 +00:00
|
|
|
const store = configureStore({
|
|
|
|
reducer: {
|
2023-03-17 03:03:11 +00:00
|
|
|
message: persistReducer(persistMessageConfig, messageReducer),
|
2023-03-14 11:00:40 +00:00
|
|
|
ui: uiReducer,
|
2023-04-15 10:30:02 +00:00
|
|
|
settingsUI: settingsUIReducer,
|
2023-03-14 11:00:40 +00:00
|
|
|
sidebar: persistReducer(persistSidebarConfig, sidebarReducer),
|
2023-03-10 22:00:37 +00:00
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
export type RootState = ReturnType<typeof store.getState>;
|
|
|
|
export type AppDispatch = typeof store.dispatch;
|
|
|
|
|
|
|
|
export const useAppDispatch: () => AppDispatch = useDispatch;
|
|
|
|
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;
|
|
|
|
|
|
|
|
export const persistor = persistStore(store);
|
|
|
|
|
|
|
|
export default store;
|