diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts index a760a019c..60d821f49 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts @@ -7,9 +7,9 @@ import { WorkflowDiagramEdge, WorkflowDiagramNode, } from '@/workflow/workflow-diagram/types/WorkflowDiagram'; +import { DATABASE_TRIGGER_EVENTS } from '@/workflow/workflow-trigger/constants/DatabaseTriggerEvents'; import { TRIGGER_STEP_ID } from '@/workflow/workflow-trigger/constants/TriggerStepId'; -import { capitalize } from 'twenty-shared'; import { isDefined } from 'twenty-ui'; import { v4 } from 'uuid'; @@ -70,7 +70,10 @@ export const generateWorkflowDiagram = ({ trigger.settings.eventName, ); - triggerLabel = `${capitalize(triggerEvent.objectType)} is ${capitalize(triggerEvent.event)}`; + triggerLabel = + DATABASE_TRIGGER_EVENTS.find( + (event) => event.value === triggerEvent.event, + )?.label ?? ''; break; } diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepHeader.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepHeader.tsx index c5fcba10a..6bd8f30fd 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepHeader.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepHeader.tsx @@ -1,9 +1,9 @@ import { TextInput } from '@/ui/field/input/components/TextInput'; -import styled from '@emotion/styled'; -import React, { useState } from 'react'; -import { useDebouncedCallback } from 'use-debounce'; -import { IconComponent } from 'packages/twenty-ui'; import { useTheme } from '@emotion/react'; +import styled from '@emotion/styled'; +import { IconComponent } from 'packages/twenty-ui'; +import { useState } from 'react'; +import { useDebouncedCallback } from 'use-debounce'; const StyledHeader = styled.div` background-color: ${({ theme }) => theme.background.secondary}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/components/RightDrawerWorkflowSelectTriggerTypeContent.tsx b/packages/twenty-front/src/modules/workflow/workflow-trigger/components/RightDrawerWorkflowSelectTriggerTypeContent.tsx index bf8cf359f..e4dc9774b 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/components/RightDrawerWorkflowSelectTriggerTypeContent.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/components/RightDrawerWorkflowSelectTriggerTypeContent.tsx @@ -3,8 +3,9 @@ import { useRightDrawer } from '@/ui/layout/right-drawer/hooks/useRightDrawer'; import { RightDrawerPages } from '@/ui/layout/right-drawer/types/RightDrawerPages'; import { WorkflowWithCurrentVersion } from '@/workflow/types/Workflow'; import { workflowSelectedNodeState } from '@/workflow/workflow-diagram/states/workflowSelectedNodeState'; +import { DATABASE_TRIGGER_TYPES } from '@/workflow/workflow-trigger/constants/DatabaseTriggerTypes'; +import { OTHER_TRIGGER_TYPES } from '@/workflow/workflow-trigger/constants/OtherTriggerTypes'; import { TRIGGER_STEP_ID } from '@/workflow/workflow-trigger/constants/TriggerStepId'; -import { TRIGGER_TYPES } from '@/workflow/workflow-trigger/constants/TriggerTypes'; import { useUpdateWorkflowVersionTrigger } from '@/workflow/workflow-trigger/hooks/useUpdateWorkflowVersionTrigger'; import { getTriggerDefaultDefinition } from '@/workflow/workflow-trigger/utils/getTriggerDefaultDefinition'; import styled from '@emotion/styled'; @@ -21,6 +22,14 @@ const StyledActionListContainer = styled.div` padding-inline: ${({ theme }) => theme.spacing(2)}; `; +const StyledSectionTitle = styled.span` + color: ${({ theme }) => theme.font.color.tertiary}; + font-size: ${({ theme }) => theme.font.size.sm}; + font-weight: ${({ theme }) => theme.font.weight.medium}; + padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => theme.spacing(1)} + ${({ theme }) => theme.spacing(1)} ${({ theme }) => theme.spacing(1)}; +`; + export const RightDrawerWorkflowSelectTriggerTypeContent = ({ workflow, }: { @@ -35,14 +44,37 @@ export const RightDrawerWorkflowSelectTriggerTypeContent = ({ return ( - {TRIGGER_TYPES.map((action) => ( + Data + {DATABASE_TRIGGER_TYPES.map((action) => ( { await updateTrigger( getTriggerDefaultDefinition({ + name: action.name, + type: action.type, + activeObjectMetadataItems, + }), + ); + + setWorkflowSelectedNode(TRIGGER_STEP_ID); + + openRightDrawer(RightDrawerPages.WorkflowStepEdit); + }} + /> + ))} + Others + {OTHER_TRIGGER_TYPES.map((action) => ( + { + await updateTrigger( + getTriggerDefaultDefinition({ + name: action.name, type: action.type, activeObjectMetadataItems, }), diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx b/packages/twenty-front/src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx index 873c5ab2e..cac249cd6 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx @@ -4,7 +4,7 @@ import { WorkflowDatabaseEventTrigger } from '@/workflow/types/Workflow'; import { splitWorkflowTriggerEventName } from '@/workflow/utils/splitWorkflowTriggerEventName'; import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody'; import { WorkflowStepHeader } from '@/workflow/workflow-steps/components/WorkflowStepHeader'; -import { OBJECT_EVENT_TRIGGERS } from '@/workflow/workflow-trigger/constants/ObjectEventTriggers'; +import { DATABASE_TRIGGER_EVENTS } from '@/workflow/workflow-trigger/constants/DatabaseTriggerEvents'; import { useTheme } from '@emotion/react'; import { IconPlaylistAdd, isDefined } from 'twenty-ui'; @@ -29,35 +29,30 @@ export const WorkflowEditTriggerDatabaseEventForm = ({ const { activeObjectMetadataItems } = useFilteredObjectMetadataItems(); - const triggerEvent = isDefined(trigger) - ? splitWorkflowTriggerEventName(trigger.settings.eventName) - : undefined; + const triggerEvent = splitWorkflowTriggerEventName( + trigger.settings.eventName, + ); const availableMetadata: Array> = activeObjectMetadataItems.map((item) => ({ label: item.labelPlural, value: item.nameSingular, })); - const recordTypeMetadata = isDefined(triggerEvent) - ? activeObjectMetadataItems.find( - (item) => item.nameSingular === triggerEvent.objectType, - ) - : undefined; const selectedEvent = isDefined(triggerEvent) - ? OBJECT_EVENT_TRIGGERS.find( + ? DATABASE_TRIGGER_EVENTS.find( (availableEvent) => availableEvent.value === triggerEvent.event, ) : undefined; const headerTitle = isDefined(trigger.name) ? trigger.name - : isDefined(recordTypeMetadata) && isDefined(selectedEvent) - ? `When a ${recordTypeMetadata.labelSingular} is ${selectedEvent.label}` + : isDefined(selectedEvent) + ? selectedEvent.label : '-'; const headerType = isDefined(selectedEvent) - ? `Trigger · Record is ${selectedEvent.label}` + ? `Trigger · ${selectedEvent.label}` : '-'; return ( @@ -92,57 +87,13 @@ export const WorkflowEditTriggerDatabaseEventForm = ({ return; } - triggerOptions.onTriggerUpdate( - isDefined(trigger) && isDefined(triggerEvent) - ? { - ...trigger, - settings: { - ...trigger.settings, - eventName: `${updatedRecordType}.${triggerEvent.event}`, - }, - } - : { - name: headerTitle, - type: 'DATABASE_EVENT', - settings: { - eventName: `${updatedRecordType}.${OBJECT_EVENT_TRIGGERS[0].value}`, - outputSchema: {}, - }, - }, - ); - }} - /> -