Consider null values as empty values for link fields (#12113)

This pull request introduces changes to improve handling of nullable
values in link-related data structures and simplifies field value
generation logic. Key updates include adjustments to type definitions,
utility functions, and component logic to support `null` values for
links, along with the removal of the `generateDefaultFieldValue`
function in favor of `generateEmptyFieldValue`.

There will be a few more follow-up Pull Requests.

---

Closes https://github.com/twentyhq/twenty/issues/11844
This commit is contained in:
Baptiste Devessier
2025-05-21 11:30:15 +02:00
committed by GitHub
parent 7461b7ac58
commit c29ed1c0c9
17 changed files with 432 additions and 104 deletions

View File

@ -29,7 +29,7 @@ describe('getFieldPreviewValue', () => {
});
// Then
expect(result).toBe(false);
expect(result).toBe(true);
});
it('returns a placeholder defaultValue if the field metadata does not have a defaultValue', () => {

View File

@ -1,9 +1,10 @@
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
import { isFieldValueEmpty } from '@/object-record/record-field/utils/isFieldValueEmpty';
import { generateDefaultFieldValue } from '@/object-record/utils/generateDefaultFieldValue';
import { generateEmptyFieldValue } from '@/object-record/utils/generateEmptyFieldValue';
import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig';
import { isFieldTypeSupportedInSettings } from '@/settings/data-model/utils/isFieldTypeSupportedInSettings';
import { isDefined } from 'twenty-shared/utils';
import { stripSimpleQuotesFromStringRecursive } from '~/utils/string/stripSimpleQuotesFromString';
type getFieldPreviewValueArgs = {
fieldMetadataItem: Pick<FieldMetadataItem, 'type' | 'defaultValue'>;
@ -16,10 +17,12 @@ export const getFieldPreviewValue = ({
if (
!isFieldValueEmpty({
fieldDefinition: { type: fieldMetadataItem.type },
fieldValue: fieldMetadataItem.defaultValue,
fieldValue: stripSimpleQuotesFromStringRecursive(
fieldMetadataItem.defaultValue,
),
})
) {
return generateDefaultFieldValue({
return generateEmptyFieldValue({
fieldMetadataItem,
});
}