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.
 
 
 
 

49 lines
1.3 KiB

import {
combineReducers,
configureStore,
ThunkAction,
Action,
} from "@reduxjs/toolkit";
import counterReducer from "../features/counter/counterSlice";
// TODO: Rework these to use a slice, otherwise redux complains about
// non-serializable Immutable.js types.
//
// import rooms from "../reducers/rooms";
// import users from "../reducers/users";
//
import { loginSocketMessageMiddleware } from "../modules/login/message";
import loginReducer from "../modules/login/slice";
import roomReducer from "../modules/room/slice";
import makeSocketMiddleware from "../modules/websocket/middleware";
import socketReducer from "../modules/websocket/slice";
const rootReducer = combineReducers({
counter: counterReducer,
login: loginReducer,
rooms: roomReducer,
socket: socketReducer,
//users,
});
// 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])
),
});
export type AppDispatch = typeof store.dispatch;
export type AppThunk<ReturnType = void> = ThunkAction<
ReturnType,
RootState,
unknown,
Action<string>
>;