[BUG] Record settings not saved (#9762)
# 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>
This commit is contained in:
@ -17,12 +17,13 @@ const mockObjectMetadataItem: ObjectMetadataItem = {
|
||||
labelSingular: 'Company',
|
||||
labelPlural: 'Companies',
|
||||
isCustom: false,
|
||||
labelIdentifierFieldMetadataId: '20202020-dd4a-4ea4-bb7b-1c7300491b65',
|
||||
isActive: true,
|
||||
createdAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString(),
|
||||
fields: [
|
||||
{
|
||||
id: 'field-1',
|
||||
id: '20202020-fed9-4ce5-9502-02a8efaf46e1',
|
||||
name: 'amount',
|
||||
label: 'Amount',
|
||||
type: FieldMetadataType.NUMBER,
|
||||
@ -32,7 +33,7 @@ const mockObjectMetadataItem: ObjectMetadataItem = {
|
||||
updatedAt: new Date().toISOString(),
|
||||
} as FieldMetadataItem,
|
||||
{
|
||||
id: 'field-2',
|
||||
id: '20202020-dd4a-4ea4-bb7b-1c7300491b65',
|
||||
name: 'name',
|
||||
label: 'Name',
|
||||
type: FieldMetadataType.TEXT,
|
||||
|
||||
@ -18,6 +18,7 @@ const objectMetadataItem: ObjectMetadataItem = {
|
||||
updatedAt: '2021-01-01',
|
||||
nameSingular: 'object1',
|
||||
namePlural: 'object1s',
|
||||
labelIdentifierFieldMetadataId: '20202020-72ba-4e11-a36d-e17b544541e1',
|
||||
icon: 'icon',
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
|
||||
@ -18,7 +18,7 @@ describe('buildRecordGqlFieldsAggregateForView', () => {
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
isRemote: false,
|
||||
labelIdentifierFieldMetadataId: null,
|
||||
labelIdentifierFieldMetadataId: '06b33746-5293-4d07-9f7f-ebf5ad396064',
|
||||
imageIdentifierFieldMetadataId: null,
|
||||
isLabelSyncedWithName: true,
|
||||
fields: [
|
||||
|
||||
@ -25,6 +25,7 @@ describe('useLimitPerMetadataItem', () => {
|
||||
labelSingular: 'labelSingular',
|
||||
namePlural: 'namePlural',
|
||||
nameSingular: 'nameSingular',
|
||||
labelIdentifierFieldMetadataId: '20202020-72ba-4e11-a36d-e17b544541e1',
|
||||
updatedAt: 'updatedAt',
|
||||
isLabelSyncedWithName: false,
|
||||
fields: [],
|
||||
|
||||
@ -9,6 +9,7 @@ describe('generateAggregateQuery', () => {
|
||||
id: 'test-id',
|
||||
labelSingular: 'Company',
|
||||
labelPlural: 'Companies',
|
||||
labelIdentifierFieldMetadataId: '20202020-72ba-4e11-a36d-e17b544541e1',
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
createdAt: new Date().toISOString(),
|
||||
@ -46,6 +47,7 @@ describe('generateAggregateQuery', () => {
|
||||
id: 'test-id',
|
||||
labelSingular: 'Person',
|
||||
labelPlural: 'People',
|
||||
labelIdentifierFieldMetadataId: '20202020-72ba-4e11-a36d-e17b544541e1',
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
createdAt: new Date().toISOString(),
|
||||
|
||||
Reference in New Issue
Block a user