Solstice web interface.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

48 lines
1.3 KiB

import {
combineReducers,
configureStore,
ThunkAction,
Action,
} from "@reduxjs/toolkit";
import counterReducer from "features/counter/counterSlice";
import { loginSocketMessageMiddleware } from "modules/login/message";
import loginReducer from "modules/login/slice";
import { roomSocketMessageMiddleware } from "modules/room/message";
import roomReducer from "modules/room/slice";
import makeSocketMiddleware from "modules/socket/middleware";
import socketReducer from "modules/socket/slice";
import userReducer from "modules/user/slice";
const rootReducer = combineReducers({
counter: counterReducer,
login: loginReducer,
rooms: roomReducer,
socket: socketReducer,
users: userReducer,
});
// Define this before defining `store`, to break a circular type reference:
//
// store -> middleware -> RootState
//
export type RootState = ReturnType<typeof rootReducer>;
export const store = configureStore({
reducer: rootReducer,
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat(
makeSocketMiddleware([
loginSocketMessageMiddleware,
roomSocketMessageMiddleware,
])
),
});
export type AppDispatch = typeof store.dispatch;
export type AppThunk<ReturnType = void> = ThunkAction<
ReturnType,
RootState,
unknown,
Action<string>
>;