diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/usePersistField.ts b/packages/twenty-front/src/modules/object-record/record-field/hooks/usePersistField.ts index 5a190391a..a0f6054b6 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/usePersistField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/usePersistField.ts @@ -25,6 +25,7 @@ import { isFieldSelect } from '@/object-record/record-field/types/guards/isField import { isFieldSelectValue } from '@/object-record/record-field/types/guards/isFieldSelectValue'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; +import { isWorkflowRunJsonField } from '@/object-record/record-field/meta-types/utils/isWorkflowRunJsonField'; import { isFieldArray } from '@/object-record/record-field/types/guards/isFieldArray'; import { isFieldArrayValue } from '@/object-record/record-field/types/guards/isFieldArrayValue'; import { isFieldRichText } from '@/object-record/record-field/types/guards/isFieldRichText'; @@ -126,6 +127,12 @@ export const usePersistField = () => { const fieldIsArray = isFieldArray(fieldDefinition) && isFieldArrayValue(valueToPersist); + const isUnpersistableRawJsonField = isWorkflowRunJsonField({ + objectMetadataNameSingular: + fieldDefinition.metadata.objectMetadataNameSingular, + fieldName: fieldDefinition.metadata.fieldName, + }); + const isValuePersistable = fieldIsRelationToOneObject || fieldIsText || @@ -142,7 +149,7 @@ export const usePersistField = () => { fieldIsSelect || fieldIsMultiSelect || fieldIsAddress || - fieldIsRawJson || + (fieldIsRawJson && !isUnpersistableRawJsonField) || fieldIsArray || fieldIsRichText || fieldIsRichTextV2; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RawJsonFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RawJsonFieldInput.tsx index 5c5c1fdbb..c8c8ed881 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RawJsonFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RawJsonFieldInput.tsx @@ -1,6 +1,6 @@ import styled from '@emotion/styled'; -import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; +import { isWorkflowRunJsonField } from '@/object-record/record-field/meta-types/utils/isWorkflowRunJsonField'; import { FieldInputClickOutsideEvent, FieldInputEvent, @@ -131,13 +131,11 @@ export const RawJsonFieldInput = ({ [handleShiftTab, draftValue], ); - // FIXME: This is temporary. We'll soon introduce a new display mode for all fields and we'll have to remove this code. - const isWorkflowRunOutputField = - fieldDefinition.metadata.objectMetadataNameSingular === - CoreObjectNameSingular.WorkflowRun && - fieldDefinition.metadata.fieldName === 'output'; - - const showEditingButton = !isWorkflowRunOutputField; + const showEditingButton = !isWorkflowRunJsonField({ + objectMetadataNameSingular: + fieldDefinition.metadata.objectMetadataNameSingular, + fieldName: fieldDefinition.metadata.fieldName, + }); const handleStartEditing = () => { setIsEditing(true); diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/utils/isWorkflowRunJsonField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/utils/isWorkflowRunJsonField.ts new file mode 100644 index 000000000..c4556aa1a --- /dev/null +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/utils/isWorkflowRunJsonField.ts @@ -0,0 +1,15 @@ +import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; + +// FIXME: This is temporary. We'll soon introduce a new display mode for all fields and we'll have to remove this code. +export const isWorkflowRunJsonField = ({ + objectMetadataNameSingular, + fieldName, +}: { + fieldName: string | undefined; + objectMetadataNameSingular: string | undefined; +}) => { + return ( + objectMetadataNameSingular === CoreObjectNameSingular.WorkflowRun && + (fieldName === 'output' || fieldName === 'context') + ); +}; diff --git a/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldValueReadOnly.ts b/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldValueReadOnly.ts index 80e6b3736..048d00335 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldValueReadOnly.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldValueReadOnly.ts @@ -1,5 +1,6 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { isWorkflowSubObjectMetadata } from '@/object-metadata/utils/isWorkflowSubObjectMetadata'; +import { isWorkflowRunJsonField } from '@/object-record/record-field/meta-types/utils/isWorkflowRunJsonField'; import { isFieldActor } from '@/object-record/record-field/types/guards/isFieldActor'; import { isFieldRichText } from '@/object-record/record-field/types/guards/isFieldRichText'; @@ -26,8 +27,10 @@ export const isFieldValueReadOnly = ({ } if ( - objectNameSingular === CoreObjectNameSingular.WorkflowRun && - fieldName === 'output' + isWorkflowRunJsonField({ + objectMetadataNameSingular: objectNameSingular, + fieldName, + }) ) { return false; }