2019-11-29 05:22:49 +00:00
|
|
|
import { createReducer } from "utils/AppsmithUtils";
|
2020-04-29 11:58:02 +00:00
|
|
|
import {
|
|
|
|
|
ReduxActionTypes,
|
|
|
|
|
ReduxAction,
|
|
|
|
|
ReduxActionErrorTypes,
|
|
|
|
|
} from "constants/ReduxActionConstants";
|
2019-11-29 05:22:49 +00:00
|
|
|
import { Plugin } from "api/PluginApi";
|
|
|
|
|
|
2020-04-29 09:23:23 +00:00
|
|
|
export interface PluginFormPayload {
|
|
|
|
|
id: string;
|
|
|
|
|
form: [];
|
|
|
|
|
}
|
|
|
|
|
|
2019-11-29 05:22:49 +00:00
|
|
|
export interface PluginDataState {
|
|
|
|
|
list: Plugin[];
|
|
|
|
|
loading: boolean;
|
2020-04-29 09:23:23 +00:00
|
|
|
formConfigs: Record<string, []>;
|
|
|
|
|
loadingFormConfigs: boolean;
|
2019-11-29 05:22:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const initialState: PluginDataState = {
|
|
|
|
|
list: [],
|
|
|
|
|
loading: false,
|
2020-04-29 09:23:23 +00:00
|
|
|
formConfigs: {},
|
|
|
|
|
loadingFormConfigs: false,
|
2019-11-29 05:22:49 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
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,
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
[ReduxActionTypes.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,
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
},
|
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,
|
|
|
|
|
};
|
|
|
|
|
},
|
2019-11-29 05:22:49 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export default pluginsReducer;
|