import { configureStore, createAction, createReducer } from "@reduxjs/toolkit"; import { setupListeners } from "@reduxjs/toolkit/query"; import { AuthApi } from "../slice/AuthApi"; export type authState = { token: string | null; }; const initialAuthState: authState = { token: null, }; export const store = configureStore({ reducer: { // Add the generated reducer as a specific top-level slice [AuthApi.reducerPath]: AuthApi.reducer, auth: createReducer(initialAuthState, (builder) => { builder.addCase(createAction("auth/token"), (state, _) => { const token: string | null = localStorage.getItem("token"); if (token) { state.token = token; } }); }), }, // Adding the api middleware enables caching, invalidation, polling, // and other useful features of `rtk-query`. middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(AuthApi.middleware), }); // optional, but required for refetchOnFocus/refetchOnReconnect behaviors // see `setupListeners` docs - takes an optional callback as the 2nd arg for customization setupListeners(store.dispatch); export type RootState = ReturnType; export type AppDispatch = typeof store.dispatch;