Files
openhuman/src/store/index.ts
T
Steven Enamakel e05b1a2587 Enhance onboarding process with Redux state management
- Integrated Redux state management into the Onboarding component by dispatching the setOnboarded action upon completion.
- Updated authSlice to include isOnboarded state, allowing for tracking of onboarding status.
- Modified the Redux store configuration to persist the onboarding status alongside the token, improving user experience and state consistency.

These changes streamline the onboarding process and enhance state management for user authentication.
2026-01-28 04:33:28 +05:30

54 lines
1.5 KiB
TypeScript

import { configureStore } from '@reduxjs/toolkit';
import { persistStore, persistReducer, FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER } from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import authReducer from './authSlice';
import socketReducer from './socketSlice';
// Persist config for auth only
const authPersistConfig = {
key: 'auth',
storage,
// Persist token and onboarding status
whitelist: ['token', 'isOnboarded'],
};
const persistedAuthReducer = persistReducer(authPersistConfig, authReducer);
// Get logger only in dev mode
let loggerMiddleware: unknown = undefined;
if (import.meta.env.DEV) {
try {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const createLogger = require('redux-logger');
loggerMiddleware = createLogger.createLogger();
} catch {
// Logger not available, continue without it
}
}
export const store = configureStore({
reducer: {
auth: persistedAuthReducer,
socket: socketReducer,
},
middleware: (getDefaultMiddleware) => {
const middleware = getDefaultMiddleware({
serializableCheck: {
ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
},
});
// Add redux-logger in development
if (loggerMiddleware) {
return middleware.concat(loggerMiddleware);
}
return middleware;
},
});
export const persistor = persistStore(store);
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;