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

51 lines
1.4 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';
import parametersReducer from './parameters';
import apiKeysReducer from './api-keys';
import voiceReducer from './voices';
import settingsUIReducer from './settings-ui';
2023-03-14 11:00:40 +00:00
import uiReducer from './ui';
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: {
// auth: authReducer,
apiKeys: persistReducer(persistConfig, apiKeysReducer),
settingsUI: settingsUIReducer,
voices: persistReducer(persistConfig, voiceReducer),
parameters: persistReducer(persistConfig, parametersReducer),
2023-03-17 03:03:11 +00:00
message: persistReducer(persistMessageConfig, messageReducer),
2023-03-14 11:00:40 +00:00
ui: uiReducer,
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;