PromucFlow_constructor/app/client/src/reducers/entityReducers/pluginsReducer.ts

114 lines
2.6 KiB
TypeScript
Raw Normal View History

import { createReducer } from "utils/AppsmithUtils";
2020-04-29 11:58:02 +00:00
import {
ReduxActionTypes,
ReduxAction,
ReduxActionErrorTypes,
} from "constants/ReduxActionConstants";
import { Plugin } from "api/PluginApi";
2020-04-29 09:23:23 +00:00
export interface PluginFormPayload {
id: string;
form: any[];
editor: any[];
setting: any[];
2020-04-29 09:23:23 +00:00
}
export interface PluginDataState {
list: Plugin[];
loading: boolean;
formConfigs: Record<string, any[]>;
editorConfigs: Record<string, any[]>;
settingConfigs: Record<string, any[]>;
2020-04-29 09:23:23 +00:00
loadingFormConfigs: boolean;
loadingDBFormConfigs: boolean;
}
const initialState: PluginDataState = {
list: [],
loading: false,
2020-04-29 09:23:23 +00:00
formConfigs: {},
editorConfigs: {},
settingConfigs: {},
2020-04-29 09:23:23 +00:00
loadingFormConfigs: false,
loadingDBFormConfigs: false,
};
const pluginsReducer = createReducer(initialState, {
[ReduxActionTypes.FETCH_PLUGINS_REQUEST]: (state: PluginDataState) => {
return { ...state, loading: true };
},
[ReduxActionTypes.FETCH_PLUGINS_SUCCESS]: (
state: PluginDataState,
action: ReduxAction<Plugin[]>,
) => {
return {
...state,
loading: false,
list: action.payload,
};
},
[ReduxActionErrorTypes.FETCH_PLUGINS_ERROR]: (state: PluginDataState) => {
return {
...state,
loading: false,
};
},
2020-04-29 09:23:23 +00:00
[ReduxActionTypes.FETCH_PLUGIN_FORM_INIT]: (state: PluginDataState) => {
return {
...state,
loadingFormConfigs: true,
};
},
[ReduxActionTypes.FETCH_PLUGIN_FORM_SUCCESS]: (
state: PluginDataState,
action: ReduxAction<PluginFormPayload>,
) => {
return {
...state,
loadingFormConfigs: false,
formConfigs: {
...state.formConfigs,
[action.payload.id]: action.payload.form,
},
editorConfigs: {
...state.editorConfigs,
[action.payload.id]: action.payload.editor,
},
settingConfigs: {
...state.settingConfigs,
[action.payload.id]: action.payload.setting,
},
2020-04-29 09:23:23 +00:00
};
},
2020-04-29 11:58:02 +00:00
[ReduxActionErrorTypes.FETCH_PLUGIN_FORM_ERROR]: (state: PluginDataState) => {
2020-04-29 09:23:23 +00:00
return {
...state,
loadingFormConfigs: false,
};
},
[ReduxActionTypes.FETCH_DB_PLUGIN_FORMS_INIT]: (state: PluginDataState) => {
return {
...state,
loadingDBFormConfigs: true,
};
},
[ReduxActionTypes.FETCH_DB_PLUGIN_FORMS_SUCCESS]: (
state: PluginDataState,
) => {
return {
...state,
loadingDBFormConfigs: false,
};
},
[ReduxActionErrorTypes.FETCH_DB_PLUGIN_FORMS_ERROR]: (
state: PluginDataState,
) => {
return {
...state,
loadingDBFormConfigs: false,
};
},
});
export default pluginsReducer;