35 lines
982 B
TypeScript
Executable File
35 lines
982 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;
|