fix: fix several field bugs (#5339)
After discussing with @charlesBochet, several fixes are needed on fields: - [x] Disable Boolean field `defaultValue` edition for now (On `defaultValue` update, newly created records are not taking the updated `defaultValue` into account. Setting the `defaultValue` on creation is fine.) - [x] Disable Phone field creation for now - [x] For the Person object, display the "Phone" field as a field of type Phone (right now its type is Text; later we'll migrate it to a proper Phone field). - [x] Fix RawJson field display (displaying `[object Object]` in Record Table cells). - [x] In Settings/Data Model, on Relation field creation/edition, "Object destination" select is not working properly if an object was not manually selected (displays Companies by default but creates a relation to another random object than Companies).
This commit is contained in:
@ -1,3 +1,5 @@
|
||||
import pick from 'lodash.pick';
|
||||
|
||||
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
||||
import { RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode';
|
||||
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
@ -12,15 +14,11 @@ export const getRecordFromRecordNode = <T extends ObjectRecord>({
|
||||
return {
|
||||
...Object.fromEntries(
|
||||
Object.entries(recordNode).map(([fieldName, value]) => {
|
||||
if (isUndefinedOrNull(value)) {
|
||||
return [fieldName, value];
|
||||
}
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
return [fieldName, value];
|
||||
}
|
||||
|
||||
if (typeof value !== 'object') {
|
||||
if (
|
||||
isUndefinedOrNull(value) ||
|
||||
Array.isArray(value) ||
|
||||
typeof value !== 'object'
|
||||
) {
|
||||
return [fieldName, value];
|
||||
}
|
||||
|
||||
@ -32,7 +30,10 @@ export const getRecordFromRecordNode = <T extends ObjectRecord>({
|
||||
: [fieldName, getRecordFromRecordNode<T>({ recordNode: value })];
|
||||
}),
|
||||
),
|
||||
id: recordNode.id,
|
||||
__typename: recordNode.__typename,
|
||||
// Only adds `id` and `__typename` if they exist.
|
||||
// RawJson field value passes through this method and does not have `id` or `__typename`.
|
||||
// This prevents adding an undefined `id` and `__typename` to the RawJson field value,
|
||||
// which is invalid JSON.
|
||||
...pick(recordNode, ['id', '__typename'] as const),
|
||||
} as T;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user