Remove filters following deleted trigger/steps (#13697)

https://github.com/user-attachments/assets/e6ec591a-2064-4dfe-9048-2f234bef5c79
This commit is contained in:
Thomas Trompette
2025-08-07 09:40:26 +02:00
committed by GitHub
parent fecf8ca913
commit 8c41c956d5
14 changed files with 248 additions and 118 deletions
@@ -1,15 +1,9 @@
import { useCommandMenu } from '@/command-menu/hooks/useCommandMenu';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
import { useDeleteWorkflowVersionStep } from '@/workflow/hooks/useDeleteWorkflowVersionStep';
import { useGetUpdatableWorkflowVersion } from '@/workflow/hooks/useGetUpdatableWorkflowVersion';
import { useStepsOutputSchema } from '@/workflow/hooks/useStepsOutputSchema';
import {
WorkflowVersion,
WorkflowWithCurrentVersion,
} from '@/workflow/types/Workflow';
import { WorkflowWithCurrentVersion } from '@/workflow/types/Workflow';
import { assertWorkflowWithCurrentVersionIsDefined } from '@/workflow/utils/assertWorkflowWithCurrentVersionIsDefined';
import { TRIGGER_STEP_ID } from '@/workflow/workflow-trigger/constants/TriggerStepId';
import { isDefined } from 'twenty-shared/utils';
export const useDeleteStep = ({
@@ -18,11 +12,7 @@ export const useDeleteStep = ({
workflow: WorkflowWithCurrentVersion | undefined;
}) => {
const { deleteWorkflowVersionStep } = useDeleteWorkflowVersionStep();
const { updateOneRecord: updateOneWorkflowVersion } =
useUpdateOneRecord<WorkflowVersion>({
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
});
const { deleteStepOutputSchema } = useStepsOutputSchema();
const { deleteStepsOutputSchema } = useStepsOutputSchema();
const { getUpdatableWorkflowVersion } = useGetUpdatableWorkflowVersion();
const { closeCommandMenu } = useCommandMenu();
@@ -36,24 +26,15 @@ export const useDeleteStep = ({
throw new Error('Could not find workflow version');
}
if (stepId === TRIGGER_STEP_ID) {
await updateOneWorkflowVersion({
idToUpdate: workflowVersionId,
updateOneRecordInput: {
trigger: null,
},
});
} else {
await deleteWorkflowVersionStep({
workflowVersionId,
stepId,
});
}
const workflowVersionStepChanges = await deleteWorkflowVersionStep({
workflowVersionId,
stepId,
});
closeCommandMenu();
deleteStepOutputSchema({
stepId,
deleteStepsOutputSchema({
stepIds: workflowVersionStepChanges?.deletedStepIds ?? [],
workflowVersionId,
});
};
@@ -1,16 +1,16 @@
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
import { isDefined } from 'twenty-shared/utils';
import { updateRecordFromCache } from '@/object-record/cache/utils/updateRecordFromCache';
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
import { WorkflowVersion } from '@/workflow/types/Workflow';
import { isDefined } from 'twenty-shared/utils';
import {
WorkflowAction,
WorkflowVersionStepChanges,
} from '~/generated/graphql';
import { updateRecordFromCache } from '@/object-record/cache/utils/updateRecordFromCache';
export const useUpdateWorkflowVersionCache = () => {
const apolloCoreClient = useApolloCoreClient();
@@ -44,8 +44,12 @@ export const useUpdateWorkflowVersionCache = () => {
return;
}
const { triggerNextStepIds, stepsNextStepIds, createdStep, deletedStepId } =
workflowVersionStepChanges;
const {
triggerNextStepIds,
stepsNextStepIds,
createdStep,
deletedStepIds,
} = workflowVersionStepChanges;
const newCachedRecord = {
...cachedRecord,
@@ -70,10 +74,16 @@ export const useUpdateWorkflowVersionCache = () => {
newCachedRecord.steps.push(formattedCreatedStep);
}
if (isDefined(deletedStepId)) {
if (isDefined(deletedStepIds) && deletedStepIds.length > 0) {
newCachedRecord.steps = newCachedRecord.steps.filter(
(step) => step.id !== deletedStepId,
(step: WorkflowAction) => !deletedStepIds.includes(step.id),
);
const hasDeletedTrigger: boolean = deletedStepIds.includes('trigger');
if (hasDeletedTrigger) {
newCachedRecord.trigger = null;
}
}
const recordGqlFields = {