Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | 363x 363x 2612x 41x 41x 41x 41x 41x 41x 41x 41x 2571x 363x 363x 2612x 279x 2333x 2612x 146x 2612x 363x 363x | import { combineReducers } from "redux";
import { Action, configureStore } from "@reduxjs/toolkit";
import { createReduxEnhancer } from "@sentry/react";
import { config } from "shared/config";
import { RootState } from "client/types/reduxTypes";
import { SUBMIT_LOGOUT } from "client/types/logoutActionsTypes";
// Reducers
import { allProgramItemsReducer } from "client/views/all-program-items/allProgramItemsSlice";
import { loginReducer } from "client/views/login/loginSlice";
import { myProgramItemsReducer } from "client/views/my-program-items/myProgramItemsSlice";
import { adminReducer } from "client/views/admin/adminSlice";
import { testSettingsReducer } from "client/test/test-settings/testSettingsSlice";
import { groupReducer } from "client/views/group/groupSlice";
import { loadingReducer } from "client/state/loading/loadingSlice";
export const combinedReducer = combineReducers({
allProgramItems: allProgramItemsReducer,
login: loginReducer,
myProgramItems: myProgramItemsReducer,
admin: adminReducer,
testSettings: testSettingsReducer,
group: groupReducer,
loading: loadingReducer,
});
// Reducer to reset state
const rootReducer = (
state: RootState | undefined,
action: Action,
): RootState => {
if (action.type === SUBMIT_LOGOUT) {
const newState = combinedReducer(undefined, action);
Eif (state?.admin) {
newState.admin = state.admin;
}
Eif (state?.allProgramItems) {
newState.allProgramItems = state.allProgramItems;
}
Eif (
config.client().loadedSettings !== "production" &&
state?.testSettings
) {
newState.testSettings = state.testSettings;
}
return newState;
}
return combinedReducer(state, action);
};
const ignoredActions = new Set([
"allProgramItems/submitGetProgramItemsAsync", // Program items is huge
"admin/submitGetSignupMessagesAsync", // Private
]);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const sentryReduxEnhancer = createReduxEnhancer({
actionTransformer: (action) => {
// Don't send large payloads or private data to sentry
if (ignoredActions.has(action.type as string)) {
return null;
}
return action;
},
stateTransformer: (state: RootState) => {
// Reduce state that is too large, private or unnecessary to send
/* eslint-disable @typescript-eslint/no-unnecessary-condition -- No idea what state the app state is in */
const transformedState = {
...state,
allProgramItems: {
...state?.allProgramItems,
// Whole program items, too large to send
programItems: `Program items count: ${state?.allProgramItems?.programItems?.length}`,
// Whole program items, too large to send
directSignups: `Direct signups count: ${state?.allProgramItems?.directSignups?.length}`,
},
admin: {
...state?.admin,
// Config data - not interesting
hiddenProgramItemIds: `Hidden program items count: ${state?.admin?.hiddenProgramItemIds?.length}`,
// Config data - not interesting
signupQuestions: `Signup questions count: ${state?.admin?.signupQuestions?.length}`,
// Contains user signup messages - helper user only
signupMessages: `Signup messages count: ${state?.admin?.signupMessages?.length}`,
},
myProgramItems: {
...state?.myProgramItems,
directSignups: state?.myProgramItems?.directSignups?.map(
(directSignup) => ({
...directSignup,
// Remove signup question answers
message: "<Message hidden>",
}),
),
},
};
/* eslint-enable @typescript-eslint/no-unnecessary-condition */
return transformedState;
},
});
export const store = configureStore({
reducer: rootReducer,
devTools:
process.env.SETTINGS === "production"
? false
: {
trace: config.client().enableReduxTrace,
traceLimit: 25,
},
enhancers: (getDefaultEnhancers) => {
return getDefaultEnhancers().concat(sentryReduxEnhancer);
},
});
|