PromucFlow_constructor/app/client/src/reducers/uiReducers/debuggerReducer.ts

104 lines
2.3 KiB
TypeScript
Raw Normal View History

2022-08-04 05:40:44 +00:00
import { createReducer } from "utils/ReducerUtils";
import { Log } from "entities/AppsmithConsole";
import {
ReduxAction,
ReduxActionTypes,
} from "@appsmith/constants/ReduxActionConstants";
import { omit, isUndefined } from "lodash";
2021-04-23 13:50:55 +00:00
const initialState: DebuggerReduxState = {
logs: [],
isOpen: false,
errors: {},
expandId: "",
hideErrors: true,
currentTab: "",
2021-04-23 13:50:55 +00:00
};
const debuggerReducer = createReducer(initialState, {
[ReduxActionTypes.DEBUGGER_LOG]: (
state: DebuggerReduxState,
action: ReduxAction<Log>,
2021-04-23 13:50:55 +00:00
) => {
return {
...state,
logs: [...state.logs, action.payload],
};
},
[ReduxActionTypes.CLEAR_DEBUGGER_LOGS]: (state: DebuggerReduxState) => {
return {
...state,
logs: [],
};
},
[ReduxActionTypes.SHOW_DEBUGGER]: (
state: DebuggerReduxState,
action: ReduxAction<boolean | undefined>,
) => {
return {
...state,
isOpen: isUndefined(action.payload) ? !state.isOpen : action.payload,
};
},
[ReduxActionTypes.DEBUGGER_ADD_ERROR_LOG]: (
2021-04-23 13:50:55 +00:00
state: DebuggerReduxState,
action: ReduxAction<Log>,
2021-04-23 13:50:55 +00:00
) => {
if (!action.payload.id) return state;
2021-04-23 13:50:55 +00:00
// Moving recent update to the top of the error list
const errors = omit(state.errors, action.payload.id);
2021-04-23 13:50:55 +00:00
return {
...state,
errors: {
[action.payload.id]: action.payload,
...errors,
2021-04-23 13:50:55 +00:00
},
};
},
[ReduxActionTypes.DEBUGGER_DELETE_ERROR_LOG]: (
2021-04-23 13:50:55 +00:00
state: DebuggerReduxState,
action: ReduxAction<string>,
2021-04-23 13:50:55 +00:00
) => {
return {
...state,
errors: omit(state.errors, action.payload),
2021-04-23 13:50:55 +00:00
};
},
[ReduxActionTypes.HIDE_DEBUGGER_ERRORS]: (
state: DebuggerReduxState,
action: ReduxAction<boolean>,
) => {
return {
...state,
hideErrors: action.payload,
};
},
[ReduxActionTypes.SET_CURRENT_DEBUGGER_TAB]: (
state: DebuggerReduxState,
action: ReduxAction<string>,
) => {
return {
...state,
currentTab: action.payload,
};
},
// Resetting debugger state after page switch
[ReduxActionTypes.SWITCH_CURRENT_PAGE_ID]: () => {
return {
...initialState,
};
},
2021-04-23 13:50:55 +00:00
});
export interface DebuggerReduxState {
logs: Log[];
2021-04-23 13:50:55 +00:00
isOpen: boolean;
errors: Record<string, Log>;
2021-04-23 13:50:55 +00:00
expandId: string;
hideErrors: boolean;
currentTab: string;
2021-04-23 13:50:55 +00:00
}
export default debuggerReducer;