37 lines
977 B
TypeScript
Executable File
37 lines
977 B
TypeScript
Executable File
import setAuthToken from './utils/setAuthToken';
|
|
import { configureStore } from '@reduxjs/toolkit';
|
|
|
|
import alertReducer from './reducers/alert';
|
|
import authReducer from './reducers/auth';
|
|
import profileReducer from './reducers/profile'
|
|
import postReducer from './reducers/post'
|
|
|
|
|
|
const store = configureStore({
|
|
reducer: {
|
|
alert: alertReducer,
|
|
auth: authReducer,
|
|
profile: profileReducer,
|
|
post: postReducer
|
|
}
|
|
})
|
|
|
|
let currentState = store.getState();
|
|
|
|
store.subscribe(() => {
|
|
// keep track of the previous and current state to compare changes
|
|
let previousState = currentState;
|
|
currentState = store.getState();
|
|
// if the token changes set the value in localStorage and axios headers
|
|
if (previousState.auth.token !== currentState.auth.token) {
|
|
const token = currentState.auth.token;
|
|
setAuthToken(token);
|
|
}
|
|
});
|
|
|
|
export type RootState = ReturnType<typeof store.getState>
|
|
export type AppDispatch = typeof store.dispatch
|
|
|
|
export default store;
|
|
|