Files
worklenz/worklenz-frontend/src/app/store.ts

164 lines
7.1 KiB
TypeScript

import { configureStore } from '@reduxjs/toolkit';
// Auth & User
import authReducer from '@features/auth/authSlice';
import userReducer from '@features/user/userSlice';
// Home Page
import homePageReducer from '@features/home-page/home-page.slice';
// Account Setup
import accountSetupReducer from '@features/account-setup/account-setup.slice';
// Core UI
import themeReducer from '@features/theme/themeSlice';
import localesReducer from '@features/i18n/localesSlice';
import alertsReducer from '@/services/alerts/alertSlice';
// Projects
import projectReducer from '@features/project/project.slice';
import projectsReducer from '@features/projects/projectsSlice';
import projectMemberReducer from '@features/projects/singleProject/members/projectMembersSlice';
import projectViewTaskListColumnsReducer from '@features/projects/singleProject/taskListColumns/taskColumnsSlice';
import phaseReducer from '@/features/projects/singleProject/phase/phases.slice';
import updatesReducer from '../features/projects/singleProject/updates/updatesSlice';
import statusReducer from '@features/projects/status/StatusSlice';
import deleteStatusReducer from '@features/projects/status/DeleteStatusSlice';
import bulkActionReducer from '@features/projects/bulkActions/bulkActionSlice';
import projectInsightsReducer from '@features/projects/insights/project-insights.slice';
import taskListCustomColumnsReducer from '@features/projects/singleProject/task-list-custom-columns/task-list-custom-columns-slice';
import boardReducer from '@features/board/board-slice';
import projectDrawerReducer from '@features/project/project-drawer.slice';
// Project Lookups
import projectCategoriesReducer from '@features/projects/lookups/projectCategories/projectCategoriesSlice';
import projectStatusesReducer from '@features/projects/lookups/projectStatuses/projectStatusesSlice';
import projectHealthReducer from '@features/projects/lookups/projectHealth/projectHealthSlice';
// Tasks
import taskReducer from '@features/tasks/tasks.slice';
import createCardReducer from '@/features/board/create-card.slice';
import priorityReducer from '@features/taskAttributes/taskPrioritySlice';
import taskLabelsReducer from '@features/taskAttributes/taskLabelSlice';
import taskStatusReducer, { deleteStatus } from '@features/taskAttributes/taskStatusSlice';
import taskDrawerReducer from '@features/task-drawer/task-drawer.slice';
// Settings & Management
import memberReducer from '@features/settings/member/memberSlice';
import clientReducer from '@features/settings/client/clientSlice';
import jobReducer from '@features/settings/job/jobSlice';
import teamReducer from '@features/teams/teamSlice';
import billingReducer from '@/features/admin-center/billing/billing.slice';
import categoriesReducer from '@features/settings/categories/categoriesSlice';
import labelReducer from '@features/settings/label/labelSlice';
// Admin Center
import adminCenterReducer from '@features/admin-center/admin-center.slice';
// Features
import dateReducer from '@features/date/dateSlice';
import notificationReducer from '@/features/navbar/notificationSlice';
import buttonReducer from '@features/actionSetup/buttonSlice';
import scheduleReducer from '../features/schedule/scheduleSlice';
// Reports
import reportingReducer from '@features/reporting/reporting.slice';
import timeLogReducer from '../features/timeReport/projects/timeLogSlice';
import taskTemplateReducer from '../features/settings/taskTemplates/taskTemplateSlice';
import projectReportsTableColumnsReducer from '../features/reporting/projectReports/project-reports-table-column-slice/project-reports-table-column-slice';
import projectReportsReducer from '../features/reporting/projectReports/project-reports-slice';
import membersReportsReducer from '../features/reporting/membersReports/membersReportsSlice';
import timeReportsOverviewReducer from '@features/reporting/time-reports/time-reports-overview.slice';
import financeReducer from '../features/finance/finance-slice';
import roadmapReducer from '../features/roadmap/roadmap-slice';
import teamMembersReducer from '@features/team-members/team-members.slice';
import groupByFilterDropdownReducer from '../features/group-by-filter-dropdown/group-by-filter-dropdown-slice';
import homePageApiService from '@/api/home-page/home-page.api.service';
import { projectsApi } from '@/api/projects/projects.v1.api.service';
export const store = configureStore({
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
serializableCheck: false,
}).concat(homePageApiService.middleware, projectsApi.middleware),
reducer: {
// Auth & User
auth: authReducer,
userReducer: userReducer,
// Account Setup
accountSetupReducer: accountSetupReducer,
// Home Page
homePageReducer: homePageReducer,
[homePageApiService.reducerPath]: homePageApiService.reducer,
[projectsApi.reducerPath]: projectsApi.reducer,
// Core UI
themeReducer: themeReducer,
localesReducer: localesReducer,
alertsReducer: alertsReducer,
// Projects
projectReducer: projectReducer,
projectsReducer: projectsReducer,
projectMemberReducer: projectMemberReducer,
teamMembersReducer: teamMembersReducer,
projectViewTaskListColumnsReducer: projectViewTaskListColumnsReducer,
phaseReducer: phaseReducer,
updatesReducer: updatesReducer,
statusReducer: statusReducer,
deleteStatusReducer: deleteStatusReducer,
bulkActionReducer: bulkActionReducer,
projectInsightsReducer: projectInsightsReducer,
taskListCustomColumnsReducer: taskListCustomColumnsReducer,
boardReducer: boardReducer,
projectDrawerReducer: projectDrawerReducer,
// Project Lookups
projectCategoriesReducer: projectCategoriesReducer,
projectStatusesReducer: projectStatusesReducer,
projectHealthReducer: projectHealthReducer,
// Tasks
taskReducer: taskReducer,
createCardReducer: createCardReducer,
priorityReducer: priorityReducer,
taskLabelsReducer: taskLabelsReducer,
taskStatusReducer: taskStatusReducer,
taskDrawerReducer: taskDrawerReducer,
// Settings & Management
memberReducer: memberReducer,
clientReducer: clientReducer,
jobReducer: jobReducer,
teamReducer: teamReducer,
billingReducer: billingReducer,
categoriesReducer: categoriesReducer,
labelReducer: labelReducer,
// Admin Center
adminCenterReducer: adminCenterReducer,
// Features
dateReducer: dateReducer,
notificationReducer: notificationReducer,
button: buttonReducer,
scheduleReducer: scheduleReducer,
// Reports
reportingReducer: reportingReducer,
timeLogReducer: timeLogReducer,
taskTemplateReducer: taskTemplateReducer,
projectReportsTableColumnsReducer: projectReportsTableColumnsReducer,
projectReportsReducer: projectReportsReducer,
membersReportsReducer: membersReportsReducer,
roadmapReducer: roadmapReducer,
groupByFilterDropdownReducer: groupByFilterDropdownReducer,
timeReportsOverviewReducer: timeReportsOverviewReducer,
financeReducer: financeReducer,
},
});
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;