production-taskbar-client / src / renderer / app / store / store.js
store.js
Raw
import { configureStore } from "@reduxjs/toolkit";
import { setupListeners } from "@reduxjs/toolkit/query";

import programsSliceReducer from "../../features/programs/programsSlice";
import workplaceCreateSliceReducer from "../../features/workplace_create/workplaceCreateSlice";
import taskbarApi from "../../apis/backend";
import { dataApi } from "../../apis/dataApi";
import taskbarSliceReducer from "../taskbarSlice";
import databaseSliceReducer from "../local_storage/rxdbSlice";
import cacheSliceReducer from "../../apis/cacheSlice";
import infoSliceReducer from "../../features/info/infoSlice";
import notificationSliceReducer from "../../features/info/notification_bar/notificationSlice";
import autoswitchSliceReducer from "../../features/info/indicators_bar/autoswitch/autoswitchSlice";
import helpdeskOverlaySliceReducer from "../../features/support/overlay_page/helpdeskOverlaySlice";
import helpdeskHistorySliceReducer from "../../features/support/support_page/history/helpdeskHistorySlice";
import informingSliceReducer from "../../features/informing/informingSlice";
import toggleButtonSliceReducer from "../components/toggle_button/toggleButtonSlice";

//! Components always should get state from database reducer because of caching mechanism
const store = configureStore({
  reducer: {
    taskbar: taskbarSliceReducer,
    cache: cacheSliceReducer,
    workplaceCreate: workplaceCreateSliceReducer,
    database: databaseSliceReducer,
    [taskbarApi.reducerPath]: taskbarApi.reducer,
    [dataApi.reducerPath]: dataApi.reducer,
    programs: programsSliceReducer,
    info: infoSliceReducer,
    notification: notificationSliceReducer,
    autoswitch: autoswitchSliceReducer,
    helpdeskOverlay: helpdeskOverlaySliceReducer,
    helpdeskHistory: helpdeskHistorySliceReducer,
    informing: informingSliceReducer,
    togglebutton: toggleButtonSliceReducer,
  },
  middleware: (defaultMiddleware) =>
    defaultMiddleware().concat(taskbarApi.middleware, dataApi.middleware),
  devTools: process.env.NODE_ENV === "development",
  enhancers: [],
});

setupListeners(store.dispatch);

export const { dispatch } = store.dispatch;
export default store;