chat-with-gpt/app/src/store/index.ts

44 lines
1.1 KiB
TypeScript
Raw Normal View History

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;