PromucFlow_constructor/app/client/src/entities/DataTree/dataTreeAction.ts
2021-06-04 12:39:36 +05:30

51 lines
1.6 KiB
TypeScript

import { DependencyMap, DynamicPath } from "utils/DynamicBindingUtils";
import { DataTreeAction, ENTITY_TYPE } from "entities/DataTree/dataTreeFactory";
import { ActionData } from "reducers/entityReducers/actionsReducer";
import {
getBindingPathsOfAction,
getDataTreeActionConfigPath,
} from "entities/Action/actionProperties";
export const generateDataTreeAction = (
action: ActionData,
editorConfig: any[],
dependencyConfig: DependencyMap = {},
): DataTreeAction => {
let dynamicBindingPathList: DynamicPath[] = [];
// update paths
if (
action.config.dynamicBindingPathList &&
action.config.dynamicBindingPathList.length
) {
dynamicBindingPathList = action.config.dynamicBindingPathList.map((d) => ({
...d,
key: `config.${d.key}`,
}));
}
const dependencyMap: DependencyMap = {};
Object.entries(dependencyConfig).forEach(([dependent, dependencies]) => {
dependencyMap[getDataTreeActionConfigPath(dependent)] = dependencies.map(
getDataTreeActionConfigPath,
);
});
return {
run: {},
actionId: action.config.id,
name: action.config.name,
pluginType: action.config.pluginType,
config: action.config.actionConfiguration,
dynamicBindingPathList,
data: action.data ? action.data.body : {},
responseMeta: {
statusCode: action.data?.statusCode,
isExecutionSuccess: action.data?.isExecutionSuccess || false,
headers: action.data?.headers,
},
ENTITY_TYPE: ENTITY_TYPE.ACTION,
isLoading: action.isLoading,
bindingPaths: getBindingPathsOfAction(action.config, editorConfig),
dependencyMap,
logBlackList: {},
};
};