@@ -965,7 +965,6 @@ export enum FeatureFlagKey {
|
||||
IS_TWO_FACTOR_AUTHENTICATION_ENABLED = 'IS_TWO_FACTOR_AUTHENTICATION_ENABLED',
|
||||
IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED',
|
||||
IS_WORKFLOW_BRANCH_ENABLED = 'IS_WORKFLOW_BRANCH_ENABLED',
|
||||
IS_WORKFLOW_FILTERING_ENABLED = 'IS_WORKFLOW_FILTERING_ENABLED',
|
||||
IS_WORKSPACE_MIGRATION_V2_ENABLED = 'IS_WORKSPACE_MIGRATION_V2_ENABLED'
|
||||
}
|
||||
|
||||
|
||||
@@ -929,7 +929,6 @@ export enum FeatureFlagKey {
|
||||
IS_TWO_FACTOR_AUTHENTICATION_ENABLED = 'IS_TWO_FACTOR_AUTHENTICATION_ENABLED',
|
||||
IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED',
|
||||
IS_WORKFLOW_BRANCH_ENABLED = 'IS_WORKFLOW_BRANCH_ENABLED',
|
||||
IS_WORKFLOW_FILTERING_ENABLED = 'IS_WORKFLOW_FILTERING_ENABLED',
|
||||
IS_WORKSPACE_MIGRATION_V2_ENABLED = 'IS_WORKSPACE_MIGRATION_V2_ENABLED'
|
||||
}
|
||||
|
||||
|
||||
-5
@@ -27,9 +27,6 @@ export const useRunWorkflowRunOpeningInCommandMenuSideEffects = () => {
|
||||
|
||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||
|
||||
const isWorkflowFilteringEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_FILTERING_ENABLED,
|
||||
);
|
||||
const isWorkflowBranchEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_BRANCH_ENABLED,
|
||||
);
|
||||
@@ -65,7 +62,6 @@ export const useRunWorkflowRunOpeningInCommandMenuSideEffects = () => {
|
||||
steps: workflowRunRecord.state.flow.steps,
|
||||
stepInfos: workflowRunRecord.state.stepInfos,
|
||||
trigger: workflowRunRecord.state.flow.trigger,
|
||||
isWorkflowFilteringEnabled,
|
||||
isWorkflowBranchEnabled,
|
||||
});
|
||||
|
||||
@@ -136,7 +132,6 @@ export const useRunWorkflowRunOpeningInCommandMenuSideEffects = () => {
|
||||
[
|
||||
apolloCoreClient.cache,
|
||||
objectPermissionsByObjectMetadataId,
|
||||
isWorkflowFilteringEnabled,
|
||||
isWorkflowBranchEnabled,
|
||||
openWorkflowRunViewStepInCommandMenu,
|
||||
getIcon,
|
||||
|
||||
+1
-3
@@ -6,7 +6,7 @@ import { WorkflowDiagramBlankEdge } from '@/workflow/workflow-diagram/components
|
||||
import { WorkflowDiagramCanvasBase } from '@/workflow/workflow-diagram/components/WorkflowDiagramCanvasBase';
|
||||
import { WorkflowDiagramCanvasEditableEffect } from '@/workflow/workflow-diagram/components/WorkflowDiagramCanvasEditableEffect';
|
||||
import { WorkflowDiagramDefaultEdgeEditable } from '@/workflow/workflow-diagram/components/WorkflowDiagramDefaultEdgeEditable';
|
||||
import { WorkflowDiagramFilteringDisabledEdgeEditable } from '@/workflow/workflow-diagram/components/WorkflowDiagramFilteringDisabledEdgeEditable';
|
||||
|
||||
import { workflowDiagramComponentState } from '@/workflow/workflow-diagram/states/workflowDiagramComponentState';
|
||||
import { workflowDiagramRightClickMenuPositionState } from '@/workflow/workflow-diagram/states/workflowDiagramRightClickMenuPositionState';
|
||||
import {
|
||||
@@ -125,8 +125,6 @@ export const WorkflowDiagramCanvasEditable = () => {
|
||||
}}
|
||||
edgeTypes={{
|
||||
blank: WorkflowDiagramBlankEdge,
|
||||
'filtering-disabled--editable':
|
||||
WorkflowDiagramFilteringDisabledEdgeEditable,
|
||||
'empty-filter--editable': WorkflowDiagramDefaultEdgeEditable,
|
||||
'filter--editable': WorkflowDiagramFilterEdgeEditable,
|
||||
}}
|
||||
|
||||
+1
-3
@@ -1,7 +1,7 @@
|
||||
import { type WorkflowVersionStatus } from '@/workflow/types/Workflow';
|
||||
import { WorkflowDiagramCanvasBase } from '@/workflow/workflow-diagram/components/WorkflowDiagramCanvasBase';
|
||||
import { WorkflowDiagramDefaultEdgeReadonly } from '@/workflow/workflow-diagram/components/WorkflowDiagramDefaultEdgeReadonly';
|
||||
import { WorkflowDiagramFilteringDisabledEdgeReadonly } from '@/workflow/workflow-diagram/components/WorkflowDiagramFilteringDisabledEdgeReadonly';
|
||||
|
||||
import { getWorkflowVersionStatusTagProps } from '@/workflow/workflow-diagram/utils/getWorkflowVersionStatusTagProps';
|
||||
import { WorkflowDiagramEmptyTriggerReadonly } from '@/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramEmptyTriggerReadonly';
|
||||
import { WorkflowDiagramFilterEdgeReadonly } from '@/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramFilterEdgeReadonly';
|
||||
@@ -25,8 +25,6 @@ export const WorkflowDiagramCanvasReadonly = ({
|
||||
'empty-trigger': WorkflowDiagramEmptyTriggerReadonly,
|
||||
}}
|
||||
edgeTypes={{
|
||||
'filtering-disabled--readonly':
|
||||
WorkflowDiagramFilteringDisabledEdgeReadonly,
|
||||
'empty-filter--readonly': WorkflowDiagramDefaultEdgeReadonly,
|
||||
'filter--readonly': WorkflowDiagramFilterEdgeReadonly,
|
||||
}}
|
||||
|
||||
-6
@@ -40,10 +40,6 @@ export const WorkflowDiagramEffect = () => {
|
||||
workflowLastCreatedStepIdComponentState,
|
||||
);
|
||||
|
||||
const isWorkflowFilteringEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_FILTERING_ENABLED,
|
||||
);
|
||||
|
||||
const isWorkflowBranchEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_BRANCH_ENABLED,
|
||||
);
|
||||
@@ -58,7 +54,6 @@ export const WorkflowDiagramEffect = () => {
|
||||
|
||||
const nextWorkflowDiagram = getWorkflowVersionDiagram({
|
||||
workflowVersion: currentVersion,
|
||||
isWorkflowFilteringEnabled,
|
||||
isWorkflowBranchEnabled,
|
||||
isEditable: true,
|
||||
});
|
||||
@@ -95,7 +90,6 @@ export const WorkflowDiagramEffect = () => {
|
||||
},
|
||||
[
|
||||
workflowDiagramState,
|
||||
isWorkflowFilteringEnabled,
|
||||
isWorkflowBranchEnabled,
|
||||
workflowLastCreatedStepIdState,
|
||||
],
|
||||
|
||||
-87
@@ -1,87 +0,0 @@
|
||||
import { WORKFLOW_DIAGRAM_EDGE_OPTIONS_CLICK_OUTSIDE_ID } from '@/workflow/workflow-diagram/constants/WorkflowDiagramEdgeOptionsClickOutsideId';
|
||||
import { useStartNodeCreation } from '@/workflow/workflow-diagram/hooks/useStartNodeCreation';
|
||||
import { type WorkflowDiagramEdge } from '@/workflow/workflow-diagram/types/WorkflowDiagram';
|
||||
import {
|
||||
EdgeLabelRenderer,
|
||||
type EdgeProps,
|
||||
getBezierPath,
|
||||
} from '@xyflow/react';
|
||||
import { IconPlus } from 'twenty-ui/display';
|
||||
import { WorkflowDiagramEdgeV2Container } from '@/workflow/workflow-diagram/components/WorkflowDiagramEdgeV2Container';
|
||||
import { WorkflowDiagramEdgeV2VisibilityContainer } from '@/workflow/workflow-diagram/components/WorkflowDiagramEdgeV2VisibilityContainer';
|
||||
import { useEdgeHovered } from '@/workflow/workflow-diagram/hooks/useEdgeHovered';
|
||||
import { WorkflowDiagramBaseEdge } from '@/workflow/workflow-diagram/components/WorkflowDiagramBaseEdge';
|
||||
import { WorkflowDiagramEdgeButtonGroup } from '@/workflow/workflow-diagram/components/WorkflowDiagramEdgeButtonGroup';
|
||||
|
||||
type WorkflowDiagramFilteringDisabledEdgeEditableProps =
|
||||
EdgeProps<WorkflowDiagramEdge>;
|
||||
|
||||
export const WorkflowDiagramFilteringDisabledEdgeEditable = ({
|
||||
id,
|
||||
markerStart,
|
||||
markerEnd,
|
||||
source,
|
||||
sourceY,
|
||||
sourceX,
|
||||
target,
|
||||
targetX,
|
||||
targetY,
|
||||
}: WorkflowDiagramFilteringDisabledEdgeEditableProps) => {
|
||||
const { isEdgeHovered } = useEdgeHovered();
|
||||
|
||||
const [edgePath, labelX, labelY] = getBezierPath({
|
||||
sourceX,
|
||||
sourceY,
|
||||
targetX,
|
||||
targetY,
|
||||
});
|
||||
|
||||
const { startNodeCreation, isNodeCreationStarted } = useStartNodeCreation();
|
||||
|
||||
const nodeCreationStarted = isNodeCreationStarted({
|
||||
parentStepId: source,
|
||||
nextStepId: target,
|
||||
});
|
||||
|
||||
const handleAddNodeButtonClick = () => {
|
||||
startNodeCreation({
|
||||
parentStepId: source,
|
||||
nextStepId: target,
|
||||
position: { x: labelX, y: labelY },
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<WorkflowDiagramBaseEdge
|
||||
source={source}
|
||||
target={target}
|
||||
path={edgePath}
|
||||
markerStart={markerStart}
|
||||
markerEnd={markerEnd}
|
||||
/>
|
||||
|
||||
<EdgeLabelRenderer>
|
||||
<WorkflowDiagramEdgeV2Container
|
||||
data-click-outside-id={WORKFLOW_DIAGRAM_EDGE_OPTIONS_CLICK_OUTSIDE_ID}
|
||||
labelX={labelX}
|
||||
labelY={labelY}
|
||||
>
|
||||
<WorkflowDiagramEdgeV2VisibilityContainer
|
||||
shouldDisplay={isEdgeHovered(id) || nodeCreationStarted}
|
||||
>
|
||||
<WorkflowDiagramEdgeButtonGroup
|
||||
iconButtons={[
|
||||
{
|
||||
Icon: IconPlus,
|
||||
onClick: handleAddNodeButtonClick,
|
||||
},
|
||||
]}
|
||||
selected={nodeCreationStarted}
|
||||
/>
|
||||
</WorkflowDiagramEdgeV2VisibilityContainer>
|
||||
</WorkflowDiagramEdgeV2Container>
|
||||
</EdgeLabelRenderer>
|
||||
</>
|
||||
);
|
||||
};
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
import { type WorkflowDiagramEdge } from '@/workflow/workflow-diagram/types/WorkflowDiagram';
|
||||
import { useTheme } from '@emotion/react';
|
||||
import { BaseEdge, type EdgeProps, getBezierPath } from '@xyflow/react';
|
||||
|
||||
type WorkflowDiagramFilteringDisabledEdgeReadonlyProps =
|
||||
EdgeProps<WorkflowDiagramEdge>;
|
||||
|
||||
export const WorkflowDiagramFilteringDisabledEdgeReadonly = ({
|
||||
markerStart,
|
||||
markerEnd,
|
||||
sourceX,
|
||||
sourceY,
|
||||
targetX,
|
||||
targetY,
|
||||
}: WorkflowDiagramFilteringDisabledEdgeReadonlyProps) => {
|
||||
const theme = useTheme();
|
||||
|
||||
const [edgePath] = getBezierPath({
|
||||
sourceX,
|
||||
sourceY,
|
||||
targetX,
|
||||
targetY,
|
||||
});
|
||||
|
||||
return (
|
||||
<BaseEdge
|
||||
markerStart={markerStart}
|
||||
markerEnd={markerEnd}
|
||||
path={edgePath}
|
||||
style={{ stroke: theme.border.color.strong }}
|
||||
/>
|
||||
);
|
||||
};
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
import { WorkflowRunDiagramBaseEdge } from '@/workflow/workflow-diagram/components/WorkflowRunDiagramBaseEdge';
|
||||
import { type WorkflowDiagramEdge } from '@/workflow/workflow-diagram/types/WorkflowDiagram';
|
||||
import { type EdgeProps, getBezierPath } from '@xyflow/react';
|
||||
|
||||
type WorkflowDiagramFilteringDisabledEdgeRunProps =
|
||||
EdgeProps<WorkflowDiagramEdge>;
|
||||
|
||||
export const WorkflowDiagramFilteringDisabledEdgeRun = ({
|
||||
sourceX,
|
||||
sourceY,
|
||||
targetX,
|
||||
targetY,
|
||||
markerStart,
|
||||
markerEnd,
|
||||
}: WorkflowDiagramFilteringDisabledEdgeRunProps) => {
|
||||
const [edgePath] = getBezierPath({
|
||||
sourceX,
|
||||
sourceY,
|
||||
targetX,
|
||||
targetY,
|
||||
});
|
||||
|
||||
return (
|
||||
<WorkflowRunDiagramBaseEdge
|
||||
path={edgePath}
|
||||
markerStart={markerStart}
|
||||
markerEnd={markerEnd}
|
||||
/>
|
||||
);
|
||||
};
|
||||
+2
-3
@@ -2,9 +2,9 @@ import { type WorkflowRunStatus } from '@/workflow/types/Workflow';
|
||||
import { WorkflowDiagramCanvasBase } from '@/workflow/workflow-diagram/components/WorkflowDiagramCanvasBase';
|
||||
import { WorkflowDiagramDefaultEdgeRun } from '@/workflow/workflow-diagram/components/WorkflowDiagramDefaultEdgeRun';
|
||||
import { WorkflowDiagramFilterEdgeRun } from '@/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeRun';
|
||||
import { WorkflowDiagramFilteringDisabledEdgeRun } from '@/workflow/workflow-diagram/components/WorkflowDiagramFilteringDisabledEdgeRun';
|
||||
import { WorkflowRunDiagramStepNode } from '@/workflow/workflow-diagram/workflow-nodes/components/WorkflowRunDiagramStepNode';
|
||||
|
||||
import { getWorkflowRunStatusTagProps } from '@/workflow/workflow-diagram/utils/getWorkflowRunStatusTagProps';
|
||||
import { WorkflowRunDiagramStepNode } from '@/workflow/workflow-diagram/workflow-nodes/components/WorkflowRunDiagramStepNode';
|
||||
import { ReactFlowProvider } from '@xyflow/react';
|
||||
|
||||
export const WorkflowRunDiagramCanvas = ({
|
||||
@@ -23,7 +23,6 @@ export const WorkflowRunDiagramCanvas = ({
|
||||
default: WorkflowRunDiagramStepNode,
|
||||
}}
|
||||
edgeTypes={{
|
||||
'filtering-disabled--run': WorkflowDiagramFilteringDisabledEdgeRun,
|
||||
'empty-filter--run': WorkflowDiagramDefaultEdgeRun,
|
||||
'filter--run': WorkflowDiagramFilterEdgeRun,
|
||||
}}
|
||||
|
||||
-5
@@ -71,9 +71,6 @@ export const WorkflowRunVisualizerEffect = ({
|
||||
|
||||
const { isInRightDrawer } = useContext(ActionMenuContext);
|
||||
|
||||
const isWorkflowFilteringEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_FILTERING_ENABLED,
|
||||
);
|
||||
const isWorkflowBranchEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_BRANCH_ENABLED,
|
||||
);
|
||||
@@ -136,7 +133,6 @@ export const WorkflowRunVisualizerEffect = ({
|
||||
trigger: workflowRunState.flow.trigger,
|
||||
steps: workflowRunState.flow.steps,
|
||||
stepInfos: workflowRunState.stepInfos,
|
||||
isWorkflowFilteringEnabled,
|
||||
isWorkflowBranchEnabled,
|
||||
});
|
||||
|
||||
@@ -209,7 +205,6 @@ export const WorkflowRunVisualizerEffect = ({
|
||||
flowState,
|
||||
getIcon,
|
||||
isWorkflowBranchEnabled,
|
||||
isWorkflowFilteringEnabled,
|
||||
openWorkflowRunViewStepInCommandMenu,
|
||||
workflowDiagramState,
|
||||
workflowDiagramStatusState,
|
||||
|
||||
+1
-11
@@ -31,10 +31,6 @@ export const WorkflowVersionVisualizerEffect = ({
|
||||
|
||||
const { populateStepsOutputSchema } = useStepsOutputSchema();
|
||||
|
||||
const isWorkflowFilteringEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_FILTERING_ENABLED,
|
||||
);
|
||||
|
||||
const isWorkflowBranchEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_BRANCH_ENABLED,
|
||||
);
|
||||
@@ -70,18 +66,12 @@ export const WorkflowVersionVisualizerEffect = ({
|
||||
|
||||
const nextWorkflowDiagram = getWorkflowVersionDiagram({
|
||||
workflowVersion,
|
||||
isWorkflowFilteringEnabled,
|
||||
isWorkflowBranchEnabled,
|
||||
isEditable: false,
|
||||
});
|
||||
|
||||
setWorkflowDiagram(nextWorkflowDiagram);
|
||||
}, [
|
||||
isWorkflowBranchEnabled,
|
||||
isWorkflowFilteringEnabled,
|
||||
setWorkflowDiagram,
|
||||
workflowVersion,
|
||||
]);
|
||||
}, [isWorkflowBranchEnabled, setWorkflowDiagram, workflowVersion]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isDefined(workflowVersion)) {
|
||||
|
||||
@@ -96,9 +96,6 @@ export type WorkflowDiagramNodeType = 'default' | 'empty-trigger';
|
||||
|
||||
export type WorkflowDiagramEdgeType =
|
||||
| 'blank'
|
||||
| 'filtering-disabled--editable'
|
||||
| 'filtering-disabled--readonly'
|
||||
| 'filtering-disabled--run'
|
||||
| 'empty-filter--editable'
|
||||
| 'empty-filter--readonly'
|
||||
| 'empty-filter--run'
|
||||
|
||||
+5
-5
@@ -104,7 +104,7 @@ describe('generateWorkflowRunDiagram', () => {
|
||||
trigger,
|
||||
steps,
|
||||
stepInfos,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
|
||||
isWorkflowBranchEnabled: true,
|
||||
});
|
||||
|
||||
@@ -334,7 +334,7 @@ describe('generateWorkflowRunDiagram', () => {
|
||||
trigger,
|
||||
steps,
|
||||
stepInfos,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
|
||||
isWorkflowBranchEnabled: true,
|
||||
});
|
||||
|
||||
@@ -564,7 +564,7 @@ describe('generateWorkflowRunDiagram', () => {
|
||||
trigger,
|
||||
steps,
|
||||
stepInfos,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
|
||||
isWorkflowBranchEnabled: true,
|
||||
});
|
||||
|
||||
@@ -813,7 +813,7 @@ describe('generateWorkflowRunDiagram', () => {
|
||||
trigger,
|
||||
steps,
|
||||
stepInfos,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
|
||||
isWorkflowBranchEnabled: true,
|
||||
});
|
||||
|
||||
@@ -1042,7 +1042,7 @@ describe('generateWorkflowRunDiagram', () => {
|
||||
trigger,
|
||||
steps,
|
||||
stepInfos,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
|
||||
isWorkflowBranchEnabled: true,
|
||||
});
|
||||
|
||||
|
||||
-4
@@ -10,7 +10,6 @@ describe('getWorkflowVersionDiagram', () => {
|
||||
const result = getWorkflowVersionDiagram({
|
||||
workflowVersion: undefined,
|
||||
isEditable: true,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
});
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
@@ -35,7 +34,6 @@ describe('getWorkflowVersionDiagram', () => {
|
||||
workflowId: '',
|
||||
},
|
||||
isEditable: true,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
});
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
@@ -80,7 +78,6 @@ describe('getWorkflowVersionDiagram', () => {
|
||||
workflowId: '',
|
||||
},
|
||||
isEditable: true,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
});
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
@@ -149,7 +146,6 @@ describe('getWorkflowVersionDiagram', () => {
|
||||
workflowId: '',
|
||||
},
|
||||
isEditable: true,
|
||||
isWorkflowFilteringEnabled: true,
|
||||
});
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
|
||||
+2
-16
@@ -19,13 +19,11 @@ export const generateWorkflowRunDiagram = ({
|
||||
trigger,
|
||||
steps,
|
||||
stepInfos,
|
||||
isWorkflowFilteringEnabled,
|
||||
isWorkflowBranchEnabled,
|
||||
}: {
|
||||
trigger: WorkflowTrigger;
|
||||
steps: Array<WorkflowStep>;
|
||||
stepInfos: WorkflowRunStepInfos | undefined;
|
||||
isWorkflowFilteringEnabled: boolean;
|
||||
isWorkflowBranchEnabled: boolean;
|
||||
}): {
|
||||
diagram: WorkflowRunDiagram;
|
||||
@@ -46,7 +44,7 @@ export const generateWorkflowRunDiagram = ({
|
||||
const workflowDiagram = generateWorkflowDiagram({
|
||||
trigger,
|
||||
steps,
|
||||
defaultEdgeType: 'filtering-disabled--readonly',
|
||||
defaultEdgeType: 'empty-filter--readonly',
|
||||
});
|
||||
|
||||
const workflowRunDiagramNodes: WorkflowRunDiagramNode[] =
|
||||
@@ -91,9 +89,7 @@ export const generateWorkflowRunDiagram = ({
|
||||
|
||||
const stepInfo = stepInfos?.[parentNode.id];
|
||||
|
||||
const edgeType: WorkflowDiagramEdgeType = isWorkflowFilteringEnabled
|
||||
? 'empty-filter--run'
|
||||
: 'filtering-disabled--run';
|
||||
const edgeType: WorkflowDiagramEdgeType = 'empty-filter--run';
|
||||
|
||||
return {
|
||||
...edge,
|
||||
@@ -106,16 +102,6 @@ export const generateWorkflowRunDiagram = ({
|
||||
};
|
||||
});
|
||||
|
||||
if (!isWorkflowFilteringEnabled) {
|
||||
return {
|
||||
diagram: {
|
||||
nodes: workflowRunDiagramNodes,
|
||||
edges: workflowRunDiagramEdges,
|
||||
},
|
||||
stepToOpenByDefault,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
diagram: transformFilterNodesAsEdges({
|
||||
nodes: workflowRunDiagramNodes,
|
||||
|
||||
+1
-12
@@ -13,29 +13,19 @@ const EMPTY_DIAGRAM: WorkflowDiagram = {
|
||||
};
|
||||
|
||||
const getEdgeTypeToCreateByDefault = ({
|
||||
isWorkflowFilteringEnabled,
|
||||
isEditable,
|
||||
}: {
|
||||
isWorkflowFilteringEnabled: boolean;
|
||||
isEditable: boolean;
|
||||
}): WorkflowDiagramEdgeType => {
|
||||
if (isWorkflowFilteringEnabled) {
|
||||
return isEditable ? 'empty-filter--editable' : 'empty-filter--readonly';
|
||||
}
|
||||
|
||||
return isEditable
|
||||
? 'filtering-disabled--editable'
|
||||
: 'filtering-disabled--readonly';
|
||||
return isEditable ? 'empty-filter--editable' : 'empty-filter--readonly';
|
||||
};
|
||||
|
||||
export const getWorkflowVersionDiagram = ({
|
||||
workflowVersion,
|
||||
isWorkflowFilteringEnabled,
|
||||
isWorkflowBranchEnabled,
|
||||
isEditable,
|
||||
}: {
|
||||
workflowVersion: WorkflowVersion | undefined;
|
||||
isWorkflowFilteringEnabled: boolean;
|
||||
isWorkflowBranchEnabled?: boolean;
|
||||
isEditable: boolean;
|
||||
}): WorkflowDiagram => {
|
||||
@@ -47,7 +37,6 @@ export const getWorkflowVersionDiagram = ({
|
||||
trigger: workflowVersion.trigger ?? undefined,
|
||||
steps: workflowVersion.steps ?? [],
|
||||
defaultEdgeType: getEdgeTypeToCreateByDefault({
|
||||
isWorkflowFilteringEnabled,
|
||||
isEditable,
|
||||
}),
|
||||
isWorkflowBranchEnabled,
|
||||
|
||||
-10
@@ -40,16 +40,6 @@ export const PUBLIC_FEATURE_FLAGS: PublicFeatureFlag[] = [
|
||||
'https://twenty.com/images/lab/is-fields-permissions-enabled.png',
|
||||
},
|
||||
},
|
||||
{
|
||||
key: FeatureFlagKey.IS_WORKFLOW_FILTERING_ENABLED,
|
||||
metadata: {
|
||||
label: 'Workflow Filter Step',
|
||||
description:
|
||||
'Continue to the next node only if the filter conditions are met',
|
||||
imagePath:
|
||||
'https://twenty.com/images/lab/is-worklfow-filtering-enabled.png',
|
||||
},
|
||||
},
|
||||
{
|
||||
key: FeatureFlagKey.IS_WORKFLOW_BRANCH_ENABLED,
|
||||
metadata: {
|
||||
|
||||
-1
@@ -7,7 +7,6 @@ export enum FeatureFlagKey {
|
||||
IS_AI_ENABLED = 'IS_AI_ENABLED',
|
||||
IS_IMAP_SMTP_CALDAV_ENABLED = 'IS_IMAP_SMTP_CALDAV_ENABLED',
|
||||
IS_MORPH_RELATION_ENABLED = 'IS_MORPH_RELATION_ENABLED',
|
||||
IS_WORKFLOW_FILTERING_ENABLED = 'IS_WORKFLOW_FILTERING_ENABLED',
|
||||
IS_WORKFLOW_BRANCH_ENABLED = 'IS_WORKFLOW_BRANCH_ENABLED',
|
||||
IS_RELATION_CONNECT_ENABLED = 'IS_RELATION_CONNECT_ENABLED',
|
||||
IS_FIELDS_PERMISSIONS_ENABLED = 'IS_FIELDS_PERMISSIONS_ENABLED',
|
||||
|
||||
-9
@@ -12,15 +12,6 @@ describe('featureFlagValidator', () => {
|
||||
).not.toThrow();
|
||||
});
|
||||
|
||||
it('should not throw error for new workflow filtering feature flag', () => {
|
||||
expect(() =>
|
||||
featureFlagValidator.assertIsFeatureFlagKey(
|
||||
'IS_WORKFLOW_FILTERING_ENABLED',
|
||||
new UnknownException('Error', 'Error'),
|
||||
),
|
||||
).not.toThrow();
|
||||
});
|
||||
|
||||
it('should throw error if featureFlagKey is invalid', () => {
|
||||
const invalidKey = 'InvalidKey';
|
||||
const exception = new UnknownException('Error', 'Error');
|
||||
|
||||
+2
-2
@@ -130,7 +130,7 @@ describe('WorkspaceEntityManager', () => {
|
||||
IS_AI_ENABLED: false,
|
||||
IS_IMAP_SMTP_CALDAV_ENABLED: false,
|
||||
IS_MORPH_RELATION_ENABLED: false,
|
||||
IS_WORKFLOW_FILTERING_ENABLED: false,
|
||||
|
||||
IS_WORKFLOW_BRANCH_ENABLED: false,
|
||||
IS_RELATION_CONNECT_ENABLED: false,
|
||||
IS_FIELDS_PERMISSIONS_ENABLED: false,
|
||||
@@ -157,7 +157,7 @@ describe('WorkspaceEntityManager', () => {
|
||||
IS_AI_ENABLED: false,
|
||||
IS_IMAP_SMTP_CALDAV_ENABLED: false,
|
||||
IS_MORPH_RELATION_ENABLED: false,
|
||||
IS_WORKFLOW_FILTERING_ENABLED: false,
|
||||
|
||||
IS_RELATION_CONNECT_ENABLED: false,
|
||||
IS_FIELDS_PERMISSIONS_ENABLED: true,
|
||||
IS_CORE_VIEW_SYNCING_ENABLED: false,
|
||||
|
||||
-5
@@ -40,11 +40,6 @@ export const seedFeatureFlags = async (
|
||||
workspaceId: workspaceId,
|
||||
value: true,
|
||||
},
|
||||
{
|
||||
key: FeatureFlagKey.IS_WORKFLOW_FILTERING_ENABLED,
|
||||
workspaceId: workspaceId,
|
||||
value: false,
|
||||
},
|
||||
{
|
||||
key: FeatureFlagKey.IS_WORKFLOW_BRANCH_ENABLED,
|
||||
workspaceId: workspaceId,
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 176 KiB |
Reference in New Issue
Block a user