diff --git a/packages/twenty-front/src/pages/settings/serverless-functions/SettingsServerlessFunctionDetail.tsx b/packages/twenty-front/src/pages/settings/serverless-functions/SettingsServerlessFunctionDetail.tsx index 780612199d..9f97c71e7b 100644 --- a/packages/twenty-front/src/pages/settings/serverless-functions/SettingsServerlessFunctionDetail.tsx +++ b/packages/twenty-front/src/pages/settings/serverless-functions/SettingsServerlessFunctionDetail.tsx @@ -37,7 +37,7 @@ export const SettingsServerlessFunctionDetail = () => { const navigate = useNavigate(); const currentWorkspace = useRecoilValue(currentWorkspaceState); - const { data } = useFindOneApplicationQuery({ + const { data, loading: applicationLoading } = useFindOneApplicationQuery({ variables: { id: applicationId }, skip: !applicationId, }); @@ -187,7 +187,8 @@ export const SettingsServerlessFunctionDetail = () => { ]; return ( - !loading && ( + !loading && + !applicationLoading && ( { displayName: 'My App', description: 'My app description', icon: 'IconWorld', + functionRoleUniversalIdentifier: '68bb56f3-8300-4cb5-8cc3-8da9ee66f1b2', }; const result = defineApp(config); diff --git a/packages/twenty-sdk/src/application/objects/define-object.ts b/packages/twenty-sdk/src/application/objects/define-object.ts index 0cb42070d8..66fca225c9 100644 --- a/packages/twenty-sdk/src/application/objects/define-object.ts +++ b/packages/twenty-sdk/src/application/objects/define-object.ts @@ -1,5 +1,5 @@ -import { type ObjectManifest } from 'twenty-shared/application'; import { isNonEmptyString } from '@sniptt/guards'; +import { type ObjectManifest } from 'twenty-shared/application'; import { validateFieldsOrThrow } from './validate-fields'; /** diff --git a/packages/twenty-sdk/src/cli/utils/__tests__/validate-manifest.spec.ts b/packages/twenty-sdk/src/cli/utils/__tests__/validate-manifest.spec.ts index dde4411432..d05a619bd2 100644 --- a/packages/twenty-sdk/src/cli/utils/__tests__/validate-manifest.spec.ts +++ b/packages/twenty-sdk/src/cli/utils/__tests__/validate-manifest.spec.ts @@ -9,6 +9,7 @@ describe('validateManifest - objectExtensions', () => { const validApplication: Application = { universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7', displayName: 'Test App', + functionRoleUniversalIdentifier: '68bb56f3-8300-4cb5-8cc3-8da9ee66f1b2', }; const validObjectExtension: ObjectExtensionManifest = { diff --git a/packages/twenty-shared/src/application/applicationType.ts b/packages/twenty-shared/src/application/applicationType.ts index 20f36cefb2..78fe3bfddd 100644 --- a/packages/twenty-shared/src/application/applicationType.ts +++ b/packages/twenty-shared/src/application/applicationType.ts @@ -2,9 +2,9 @@ import { type ApplicationVariables } from '@/application'; import { type SyncableEntityOptions } from '@/application/syncableEntityOptionsType'; export type Application = SyncableEntityOptions & { + functionRoleUniversalIdentifier: string; displayName?: string; description?: string; icon?: string; applicationVariables?: ApplicationVariables; - functionRoleUniversalIdentifier?: string; }; diff --git a/packages/twenty-shared/src/application/relationFieldManifestType.ts b/packages/twenty-shared/src/application/relationFieldManifestType.ts index 7ad0e610c2..7b3601878a 100644 --- a/packages/twenty-shared/src/application/relationFieldManifestType.ts +++ b/packages/twenty-shared/src/application/relationFieldManifestType.ts @@ -1,17 +1,13 @@ -import { type SyncableEntityOptions } from '@/application/syncableEntityOptionsType'; +import { type FieldManifest } from '@/application/fieldManifestType'; import { type FieldMetadataType } from '@/types'; import { type RelationOnDeleteAction } from '@/types/RelationOnDeleteAction.type'; import { type RelationType } from '@/types/RelationType'; -export type RelationFieldManifest = SyncableEntityOptions & { - name: string; - label: string; - description?: string; - icon?: string; - relationType: RelationType; - targetObjectUniversalIdentifier: string; - targetFieldLabel: string; - targetFieldIcon?: string; - onDelete?: RelationOnDeleteAction; - type: FieldMetadataType.RELATION; -}; +export type RelationFieldManifest = + FieldManifest & { + relationType: RelationType; + targetObjectUniversalIdentifier: string; + targetFieldLabel: string; + targetFieldIcon?: string; + onDelete?: RelationOnDeleteAction; + };