8ab01ebef4
# Introduction By initially fixing this Fixes #9381, discovered other behavior that have been fix. Overall we encountered a bug that corrupts a workspace and make the browser + api crash This issue https://github.com/twentyhq/core-team-issues/issues/25 suggests a refactor that has final save button instead of auto-save ## `labelIdentifierFieldMetadataId` form default value The default value resulted in being undefined, resulting in react hook form `labelIdentifierFieldMetadataId` is required field error. ### Fix Setting default value fallback to `null` as field is `nullable` ## `SettingsDataModelObjectSettingsFormCard` never triggers form Unless I'm mistaken in production touching any fields within `SettingsDataModelObjectSettingsFormCard` would never trigger form submission until you also modify `SettingsDataModelObjectAboutForm` fields ### Fix Provide and apply `onblur` that triggers the form on both `SettingsDataModelObjectSettingsFormCard` inputs ## Wrong default `labelIdentifierFieldMetadataItem` on first page render When landing on the page for the first time, if a custom `labelIdentifierFieldMetadataItem` has been set it won't be computed within the `PreviewCard`. Occurs when `labelIdentifierFieldMetadataId` form default value is undefined, due to `any` injection. ### Fix In the `getLabelIdentifierFieldMetadataItem` check the `labelIdentifierFieldMetadataIdFormValue` definition, if undefined fallback to current `objectMetadata` identifier --------- Co-authored-by: Charles Bochet <charles@twenty.com>
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { objectMetadataItemSchema } from '@/object-metadata/validation-schemas/objectMetadataItemSchema';
|
|
import { ObjectMetadataItemsQuery } from '~/generated-metadata/graphql';
|
|
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
|
|
|
|
export const mapPaginatedObjectMetadataItemsToObjectMetadataItems = ({
|
|
pagedObjectMetadataItems,
|
|
}: {
|
|
pagedObjectMetadataItems: ObjectMetadataItemsQuery | undefined;
|
|
}) => {
|
|
const formattedObjects: ObjectMetadataItem[] =
|
|
pagedObjectMetadataItems?.objects.edges.map((object) => {
|
|
const labelIdentifierFieldMetadataId =
|
|
objectMetadataItemSchema.shape.labelIdentifierFieldMetadataId.parse(
|
|
object.node.labelIdentifierFieldMetadataId,
|
|
);
|
|
|
|
return {
|
|
...object.node,
|
|
fields: object.node.fields.edges.map((field) => field.node),
|
|
labelIdentifierFieldMetadataId,
|
|
indexMetadatas: object.node.indexMetadatas?.edges.map((index) => ({
|
|
...index.node,
|
|
indexFieldMetadatas: index.node.indexFieldMetadatas?.edges.map(
|
|
(indexField) => indexField.node,
|
|
),
|
|
})),
|
|
};
|
|
}) ?? [];
|
|
|
|
return formattedObjects;
|
|
};
|