Merge remote-tracking branch 'origin/main' into feat/email-attachments-and-open-in-app

# Conflicts:
#	packages/twenty-client-sdk/src/metadata/generated/types.ts
This commit is contained in:
Félix Malfait
2026-04-09 16:07:48 +02:00
73 changed files with 2806 additions and 2240 deletions
@@ -2790,6 +2790,34 @@ type ConnectedAccountDTO {
updatedAt: DateTime!
}
type PublicConnectionParametersOutput {
host: String!
port: Float!
username: String
secure: Boolean
}
type PublicImapSmtpCaldavConnectionParameters {
IMAP: PublicConnectionParametersOutput
SMTP: PublicConnectionParametersOutput
CALDAV: PublicConnectionParametersOutput
}
type ConnectedAccountPublicDTO {
id: UUID!
handle: String!
provider: String!
lastCredentialsRefreshedAt: DateTime
authFailedAt: DateTime
handleAliases: [String!]
scopes: [String!]
lastSignedInAt: DateTime
userWorkspaceId: UUID!
createdAt: DateTime!
updatedAt: DateTime!
connectionParameters: PublicImapSmtpCaldavConnectionParameters
}
type SendEmailOutput {
success: Boolean!
error: String
@@ -3208,6 +3236,7 @@ type Query {
myMessageFolders(messageChannelId: UUID): [MessageFolder!]!
myMessageChannels(connectedAccountId: UUID): [MessageChannel!]!
myConnectedAccounts: [ConnectedAccountDTO!]!
connectedAccountById(id: UUID!): ConnectedAccountPublicDTO
connectedAccounts: [ConnectedAccountDTO!]!
myCalendarChannels(connectedAccountId: UUID): [CalendarChannel!]!
webhooks: [Webhook!]!
@@ -3997,6 +4026,7 @@ input CreatePageLayoutWidgetInput {
}
input UpdatePageLayoutWidgetInput {
pageLayoutTabId: UUID
title: String
type: WidgetType
objectMetadataId: UUID
@@ -2449,6 +2449,37 @@ export interface ConnectedAccountDTO {
__typename: 'ConnectedAccountDTO'
}
export interface PublicConnectionParametersOutput {
host: Scalars['String']
port: Scalars['Float']
username?: Scalars['String']
secure?: Scalars['Boolean']
__typename: 'PublicConnectionParametersOutput'
}
export interface PublicImapSmtpCaldavConnectionParameters {
IMAP?: PublicConnectionParametersOutput
SMTP?: PublicConnectionParametersOutput
CALDAV?: PublicConnectionParametersOutput
__typename: 'PublicImapSmtpCaldavConnectionParameters'
}
export interface ConnectedAccountPublicDTO {
id: Scalars['UUID']
handle: Scalars['String']
provider: Scalars['String']
lastCredentialsRefreshedAt?: Scalars['DateTime']
authFailedAt?: Scalars['DateTime']
handleAliases?: Scalars['String'][]
scopes?: Scalars['String'][]
lastSignedInAt?: Scalars['DateTime']
userWorkspaceId: Scalars['UUID']
createdAt: Scalars['DateTime']
updatedAt: Scalars['DateTime']
connectionParameters?: PublicImapSmtpCaldavConnectionParameters
__typename: 'ConnectedAccountPublicDTO'
}
export interface SendEmailOutput {
success: Scalars['Boolean']
error?: Scalars['String']
@@ -2775,6 +2806,7 @@ export interface Query {
myMessageFolders: MessageFolder[]
myMessageChannels: MessageChannel[]
myConnectedAccounts: ConnectedAccountDTO[]
connectedAccountById?: ConnectedAccountPublicDTO
connectedAccounts: ConnectedAccountDTO[]
myCalendarChannels: CalendarChannel[]
webhooks: Webhook[]
@@ -5682,6 +5714,40 @@ export interface ConnectedAccountDTOGenqlSelection{
__scalar?: boolean | number
}
export interface PublicConnectionParametersOutputGenqlSelection{
host?: boolean | number
port?: boolean | number
username?: boolean | number
secure?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface PublicImapSmtpCaldavConnectionParametersGenqlSelection{
IMAP?: PublicConnectionParametersOutputGenqlSelection
SMTP?: PublicConnectionParametersOutputGenqlSelection
CALDAV?: PublicConnectionParametersOutputGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface ConnectedAccountPublicDTOGenqlSelection{
id?: boolean | number
handle?: boolean | number
provider?: boolean | number
lastCredentialsRefreshedAt?: boolean | number
authFailedAt?: boolean | number
handleAliases?: boolean | number
scopes?: boolean | number
lastSignedInAt?: boolean | number
userWorkspaceId?: boolean | number
createdAt?: boolean | number
updatedAt?: boolean | number
connectionParameters?: PublicImapSmtpCaldavConnectionParametersGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface SendEmailOutputGenqlSelection{
success?: boolean | number
error?: boolean | number
@@ -6024,6 +6090,7 @@ export interface QueryGenqlSelection{
myMessageFolders?: (MessageFolderGenqlSelection & { __args?: {messageChannelId?: (Scalars['UUID'] | null)} })
myMessageChannels?: (MessageChannelGenqlSelection & { __args?: {connectedAccountId?: (Scalars['UUID'] | null)} })
myConnectedAccounts?: ConnectedAccountDTOGenqlSelection
connectedAccountById?: (ConnectedAccountPublicDTOGenqlSelection & { __args: {id: Scalars['UUID']} })
connectedAccounts?: ConnectedAccountDTOGenqlSelection
myCalendarChannels?: (CalendarChannelGenqlSelection & { __args?: {connectedAccountId?: (Scalars['UUID'] | null)} })
webhooks?: WebhookGenqlSelection
@@ -6484,7 +6551,7 @@ export interface GridPositionInput {row: Scalars['Float'],column: Scalars['Float
export interface CreatePageLayoutWidgetInput {pageLayoutTabId: Scalars['UUID'],title: Scalars['String'],type: WidgetType,objectMetadataId?: (Scalars['UUID'] | null),gridPosition: GridPositionInput,position?: (Scalars['JSON'] | null),configuration: Scalars['JSON']}
export interface UpdatePageLayoutWidgetInput {title?: (Scalars['String'] | null),type?: (WidgetType | null),objectMetadataId?: (Scalars['UUID'] | null),gridPosition?: (GridPositionInput | null),position?: (Scalars['JSON'] | null),configuration?: (Scalars['JSON'] | null),conditionalDisplay?: (Scalars['JSON'] | null)}
export interface UpdatePageLayoutWidgetInput {pageLayoutTabId?: (Scalars['UUID'] | null),title?: (Scalars['String'] | null),type?: (WidgetType | null),objectMetadataId?: (Scalars['UUID'] | null),gridPosition?: (GridPositionInput | null),position?: (Scalars['JSON'] | null),configuration?: (Scalars['JSON'] | null),conditionalDisplay?: (Scalars['JSON'] | null)}
export interface CreateLogicFunctionFromSourceInput {id?: (Scalars['UUID'] | null),universalIdentifier?: (Scalars['UUID'] | null),name: Scalars['String'],description?: (Scalars['String'] | null),timeoutSeconds?: (Scalars['Float'] | null),toolInputSchema?: (Scalars['JSON'] | null),isTool?: (Scalars['Boolean'] | null),source?: (Scalars['JSON'] | null),cronTriggerSettings?: (Scalars['JSON'] | null),databaseEventTriggerSettings?: (Scalars['JSON'] | null),httpRouteTriggerSettings?: (Scalars['JSON'] | null)}
@@ -8593,6 +8660,30 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
const PublicConnectionParametersOutput_possibleTypes: string[] = ['PublicConnectionParametersOutput']
export const isPublicConnectionParametersOutput = (obj?: { __typename?: any } | null): obj is PublicConnectionParametersOutput => {
if (!obj?.__typename) throw new Error('__typename is missing in "isPublicConnectionParametersOutput"')
return PublicConnectionParametersOutput_possibleTypes.includes(obj.__typename)
}
const PublicImapSmtpCaldavConnectionParameters_possibleTypes: string[] = ['PublicImapSmtpCaldavConnectionParameters']
export const isPublicImapSmtpCaldavConnectionParameters = (obj?: { __typename?: any } | null): obj is PublicImapSmtpCaldavConnectionParameters => {
if (!obj?.__typename) throw new Error('__typename is missing in "isPublicImapSmtpCaldavConnectionParameters"')
return PublicImapSmtpCaldavConnectionParameters_possibleTypes.includes(obj.__typename)
}
const ConnectedAccountPublicDTO_possibleTypes: string[] = ['ConnectedAccountPublicDTO']
export const isConnectedAccountPublicDTO = (obj?: { __typename?: any } | null): obj is ConnectedAccountPublicDTO => {
if (!obj?.__typename) throw new Error('__typename is missing in "isConnectedAccountPublicDTO"')
return ConnectedAccountPublicDTO_possibleTypes.includes(obj.__typename)
}
const SendEmailOutput_possibleTypes: string[] = ['SendEmailOutput']
export const isSendEmailOutput = (obj?: { __typename?: any } | null): obj is SendEmailOutput => {
if (!obj?.__typename) throw new Error('__typename is missing in "isSendEmailOutput"')
File diff suppressed because it is too large Load Diff
@@ -1035,6 +1035,22 @@ export type ConnectedAccountDto = {
userWorkspaceId: Scalars['UUID'];
};
export type ConnectedAccountPublicDto = {
__typename?: 'ConnectedAccountPublicDTO';
authFailedAt?: Maybe<Scalars['DateTime']>;
connectionParameters?: Maybe<PublicImapSmtpCaldavConnectionParameters>;
createdAt: Scalars['DateTime'];
handle: Scalars['String'];
handleAliases?: Maybe<Array<Scalars['String']>>;
id: Scalars['UUID'];
lastCredentialsRefreshedAt?: Maybe<Scalars['DateTime']>;
lastSignedInAt?: Maybe<Scalars['DateTime']>;
provider: Scalars['String'];
scopes?: Maybe<Array<Scalars['String']>>;
updatedAt: Scalars['DateTime'];
userWorkspaceId: Scalars['UUID'];
};
export type ConnectedImapSmtpCaldavAccount = {
__typename?: 'ConnectedImapSmtpCaldavAccount';
connectionParameters?: Maybe<ImapSmtpCaldavConnectionParameters>;
@@ -4230,6 +4246,14 @@ export type PublicApplicationRegistration = {
websiteUrl?: Maybe<Scalars['String']>;
};
export type PublicConnectionParametersOutput = {
__typename?: 'PublicConnectionParametersOutput';
host: Scalars['String'];
port: Scalars['Float'];
secure?: Maybe<Scalars['Boolean']>;
username?: Maybe<Scalars['String']>;
};
export type PublicDomain = {
__typename?: 'PublicDomain';
createdAt: Scalars['DateTime'];
@@ -4251,6 +4275,13 @@ export type PublicFeatureFlagMetadata = {
label: Scalars['String'];
};
export type PublicImapSmtpCaldavConnectionParameters = {
__typename?: 'PublicImapSmtpCaldavConnectionParameters';
CALDAV?: Maybe<PublicConnectionParametersOutput>;
IMAP?: Maybe<PublicConnectionParametersOutput>;
SMTP?: Maybe<PublicConnectionParametersOutput>;
};
export type PublicWorkspaceData = {
__typename?: 'PublicWorkspaceData';
authBypassProviders?: Maybe<AuthBypassProviders>;
@@ -4277,6 +4308,7 @@ export type Query = {
checkWorkspaceInviteHashIsValid: WorkspaceInviteHashValid;
commandMenuItem?: Maybe<CommandMenuItem>;
commandMenuItems: Array<CommandMenuItem>;
connectedAccountById?: Maybe<ConnectedAccountPublicDto>;
connectedAccounts: Array<ConnectedAccountDto>;
currentUser: User;
currentWorkspace: Workspace;
@@ -4441,6 +4473,11 @@ export type QueryCommandMenuItemArgs = {
};
export type QueryConnectedAccountByIdArgs = {
id: Scalars['UUID'];
};
export type QueryEnterpriseCheckoutSessionArgs = {
billingInterval?: InputMaybe<Scalars['String']>;
};
@@ -5469,6 +5506,7 @@ export type UpdatePageLayoutWidgetInput = {
configuration?: InputMaybe<Scalars['JSON']>;
gridPosition?: InputMaybe<GridPositionInput>;
objectMetadataId?: InputMaybe<Scalars['UUID']>;
pageLayoutTabId?: InputMaybe<Scalars['UUID']>;
position?: InputMaybe<Scalars['JSON']>;
title?: InputMaybe<Scalars['String']>;
type?: InputMaybe<WidgetType>;
@@ -7116,6 +7154,15 @@ export type UpdateMessageFoldersMutationVariables = Exact<{
export type UpdateMessageFoldersMutation = { __typename?: 'Mutation', updateMessageFolders: Array<{ __typename?: 'MessageFolder', id: string, isSynced: boolean }> };
export type PublicConnectionParamsFragment = { __typename?: 'PublicConnectionParametersOutput', host: string, port: number, secure?: boolean | null, username?: string | null };
export type ConnectedAccountByIdQueryVariables = Exact<{
id: Scalars['UUID'];
}>;
export type ConnectedAccountByIdQuery = { __typename?: 'Query', connectedAccountById?: { __typename?: 'ConnectedAccountPublicDTO', id: string, handle: string, provider: string, scopes?: Array<string> | null, userWorkspaceId: string, connectionParameters?: { __typename?: 'PublicImapSmtpCaldavConnectionParameters', IMAP?: { __typename?: 'PublicConnectionParametersOutput', host: string, port: number, secure?: boolean | null, username?: string | null } | null, SMTP?: { __typename?: 'PublicConnectionParametersOutput', host: string, port: number, secure?: boolean | null, username?: string | null } | null, CALDAV?: { __typename?: 'PublicConnectionParametersOutput', host: string, port: number, secure?: boolean | null, username?: string | null } | null } | null } | null };
export type GetConnectedImapSmtpCaldavAccountQueryVariables = Exact<{
id: Scalars['UUID'];
}>;
@@ -8301,6 +8348,7 @@ export const MarketplaceAppDetailFieldsFragmentDoc = {"kind":"Document","definit
export const MarketplaceAppFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"MarketplaceAppFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"MarketplaceApp"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"author"}},{"kind":"Field","name":{"kind":"Name","value":"category"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}}]}}]} as unknown as DocumentNode<MarketplaceAppFieldsFragment, unknown>;
export const NavigationMenuItemFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"NavigationMenuItemFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"NavigationMenuItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"userWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"targetRecordId"}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"viewId"}},{"kind":"Field","name":{"kind":"Name","value":"folderId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"link"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode<NavigationMenuItemFieldsFragment, unknown>;
export const NavigationMenuItemQueryFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"NavigationMenuItemQueryFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"NavigationMenuItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"NavigationMenuItemFields"}},{"kind":"Field","name":{"kind":"Name","value":"targetRecordIdentifier"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifier"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"NavigationMenuItemFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"NavigationMenuItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"userWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"targetRecordId"}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"viewId"}},{"kind":"Field","name":{"kind":"Name","value":"folderId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"link"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode<NavigationMenuItemQueryFieldsFragment, unknown>;
export const PublicConnectionParamsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PublicConnectionParams"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PublicConnectionParametersOutput"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"port"}},{"kind":"Field","name":{"kind":"Name","value":"secure"}},{"kind":"Field","name":{"kind":"Name","value":"username"}}]}}]} as unknown as DocumentNode<PublicConnectionParamsFragment, unknown>;
export const ApplicationRegistrationFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode<ApplicationRegistrationFragmentFragment, unknown>;
export const BillingPriceLicensedFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BillingPriceLicensedFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BillingPriceLicensed"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePriceId"}},{"kind":"Field","name":{"kind":"Name","value":"unitAmount"}},{"kind":"Field","name":{"kind":"Name","value":"recurringInterval"}},{"kind":"Field","name":{"kind":"Name","value":"priceUsageType"}}]}}]} as unknown as DocumentNode<BillingPriceLicensedFragmentFragment, unknown>;
export const BillingPriceMeteredFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BillingPriceMeteredFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BillingPriceMetered"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"priceUsageType"}},{"kind":"Field","name":{"kind":"Name","value":"recurringInterval"}},{"kind":"Field","name":{"kind":"Name","value":"stripePriceId"}},{"kind":"Field","name":{"kind":"Name","value":"tiers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"flatAmount"}},{"kind":"Field","name":{"kind":"Name","value":"unitAmount"}},{"kind":"Field","name":{"kind":"Name","value":"upTo"}}]}}]}}]} as unknown as DocumentNode<BillingPriceMeteredFragmentFragment, unknown>;
@@ -8440,6 +8488,7 @@ export const UpdateCalendarChannelDocument = {"kind":"Document","definitions":[{
export const UpdateMessageChannelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateMessageChannel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateMessageChannelInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateMessageChannel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"contactAutoCreationPolicy"}},{"kind":"Field","name":{"kind":"Name","value":"excludeNonProfessionalEmails"}},{"kind":"Field","name":{"kind":"Name","value":"excludeGroupEmails"}},{"kind":"Field","name":{"kind":"Name","value":"messageFolderImportPolicy"}}]}}]}}]} as unknown as DocumentNode<UpdateMessageChannelMutation, UpdateMessageChannelMutationVariables>;
export const UpdateMessageFolderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateMessageFolder"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateMessageFolderInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateMessageFolder"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isSynced"}}]}}]}}]} as unknown as DocumentNode<UpdateMessageFolderMutation, UpdateMessageFolderMutationVariables>;
export const UpdateMessageFoldersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateMessageFolders"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateMessageFoldersInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateMessageFolders"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isSynced"}}]}}]}}]} as unknown as DocumentNode<UpdateMessageFoldersMutation, UpdateMessageFoldersMutationVariables>;
export const ConnectedAccountByIdDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ConnectedAccountById"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"connectedAccountById"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"handle"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"scopes"}},{"kind":"Field","name":{"kind":"Name","value":"userWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"connectionParameters"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"IMAP"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PublicConnectionParams"}}]}},{"kind":"Field","name":{"kind":"Name","value":"SMTP"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PublicConnectionParams"}}]}},{"kind":"Field","name":{"kind":"Name","value":"CALDAV"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PublicConnectionParams"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PublicConnectionParams"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PublicConnectionParametersOutput"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"port"}},{"kind":"Field","name":{"kind":"Name","value":"secure"}},{"kind":"Field","name":{"kind":"Name","value":"username"}}]}}]} as unknown as DocumentNode<ConnectedAccountByIdQuery, ConnectedAccountByIdQueryVariables>;
export const GetConnectedImapSmtpCaldavAccountDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetConnectedImapSmtpCaldavAccount"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getConnectedImapSmtpCaldavAccount"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"handle"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"userWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"connectionParameters"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"IMAP"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"port"}},{"kind":"Field","name":{"kind":"Name","value":"secure"}},{"kind":"Field","name":{"kind":"Name","value":"username"}},{"kind":"Field","name":{"kind":"Name","value":"password"}}]}},{"kind":"Field","name":{"kind":"Name","value":"SMTP"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"username"}},{"kind":"Field","name":{"kind":"Name","value":"port"}},{"kind":"Field","name":{"kind":"Name","value":"secure"}},{"kind":"Field","name":{"kind":"Name","value":"password"}}]}},{"kind":"Field","name":{"kind":"Name","value":"CALDAV"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"port"}},{"kind":"Field","name":{"kind":"Name","value":"secure"}},{"kind":"Field","name":{"kind":"Name","value":"username"}},{"kind":"Field","name":{"kind":"Name","value":"password"}}]}}]}}]}}]}}]} as unknown as DocumentNode<GetConnectedImapSmtpCaldavAccountQuery, GetConnectedImapSmtpCaldavAccountQueryVariables>;
export const MyCalendarChannelsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"MyCalendarChannels"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"connectedAccountId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"myCalendarChannels"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"connectedAccountId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"connectedAccountId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"handle"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"syncStatus"}},{"kind":"Field","name":{"kind":"Name","value":"syncStage"}},{"kind":"Field","name":{"kind":"Name","value":"syncStageStartedAt"}},{"kind":"Field","name":{"kind":"Name","value":"isContactAutoCreationEnabled"}},{"kind":"Field","name":{"kind":"Name","value":"contactAutoCreationPolicy"}},{"kind":"Field","name":{"kind":"Name","value":"isSyncEnabled"}},{"kind":"Field","name":{"kind":"Name","value":"connectedAccountId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode<MyCalendarChannelsQuery, MyCalendarChannelsQueryVariables>;
export const MyConnectedAccountsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"MyConnectedAccounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"myConnectedAccounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"handle"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"authFailedAt"}},{"kind":"Field","name":{"kind":"Name","value":"scopes"}},{"kind":"Field","name":{"kind":"Name","value":"handleAliases"}},{"kind":"Field","name":{"kind":"Name","value":"lastSignedInAt"}},{"kind":"Field","name":{"kind":"Name","value":"userWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"connectionParameters"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"IMAP"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"port"}},{"kind":"Field","name":{"kind":"Name","value":"secure"}},{"kind":"Field","name":{"kind":"Name","value":"username"}},{"kind":"Field","name":{"kind":"Name","value":"password"}}]}},{"kind":"Field","name":{"kind":"Name","value":"SMTP"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"port"}},{"kind":"Field","name":{"kind":"Name","value":"secure"}},{"kind":"Field","name":{"kind":"Name","value":"username"}},{"kind":"Field","name":{"kind":"Name","value":"password"}}]}},{"kind":"Field","name":{"kind":"Name","value":"CALDAV"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"username"}},{"kind":"Field","name":{"kind":"Name","value":"password"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode<MyConnectedAccountsQuery, MyConnectedAccountsQueryVariables>;
@@ -5,7 +5,7 @@ import { ConnectedAccountProvider } from 'twenty-shared/types';
import { assertUnreachable, isDefined } from 'twenty-shared/utils';
export const getMissingDraftEmailScopes = (
connectedAccount: ConnectedAccount,
connectedAccount: Pick<ConnectedAccount, 'provider' | 'scopes'>,
): string[] => {
const scopes = connectedAccount.scopes;
@@ -1,8 +1,6 @@
import { type ConnectedAccount } from '@/accounts/types/ConnectedAccount';
import { currentUserState } from '@/auth/states/currentUserState';
import { type InformationBannerKeys } from '@/information-banner/types/InformationBannerKeys';
import { CoreObjectNameSingular } from 'twenty-shared/types';
import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord';
import { useMyConnectedAccounts } from '@/settings/accounts/hooks/useMyConnectedAccounts';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
export const useAccountToReconnect = (key: InformationBannerKeys) => {
@@ -12,13 +10,13 @@ export const useAccountToReconnect = (key: InformationBannerKeys) => {
const firstAccountIdToReconnect = userVars?.[key]?.[0];
const accountToReconnect = useFindOneRecord<ConnectedAccount>({
objectNameSingular: CoreObjectNameSingular.ConnectedAccount,
objectRecordId: firstAccountIdToReconnect,
skip: !firstAccountIdToReconnect,
});
const { accounts } = useMyConnectedAccounts();
const accountToReconnect = accounts.find(
(account) => account.id === firstAccountIdToReconnect,
);
return {
accountToReconnect: accountToReconnect?.record,
accountToReconnect,
};
};
@@ -0,0 +1,31 @@
import { gql } from '@apollo/client';
export const GET_CONNECTED_ACCOUNT_BY_ID = gql`
fragment PublicConnectionParams on PublicConnectionParametersOutput {
host
port
secure
username
}
query ConnectedAccountById($id: UUID!) {
connectedAccountById(id: $id) {
id
handle
provider
scopes
userWorkspaceId
connectionParameters {
IMAP {
...PublicConnectionParams
}
SMTP {
...PublicConnectionParams
}
CALDAV {
...PublicConnectionParams
}
}
}
}
`;
@@ -1,12 +1,12 @@
import { type ConnectedAccount } from '@/accounts/types/ConnectedAccount';
import { getMissingDraftEmailScopes } from '@/accounts/utils/hasMissingDraftEmailScopes';
import { WorkflowSendEmailAttachments } from '@/advanced-text-editor/components/WorkflowSendEmailAttachments';
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu';
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { FormAdvancedTextFieldInput } from '@/object-record/record-field/ui/form-types/components/FormAdvancedTextFieldInput';
import { FormMultiTextFieldInput } from '@/object-record/record-field/ui/form-types/components/FormMultiTextFieldInput';
import { FormTextFieldInput } from '@/object-record/record-field/ui/form-types/components/FormTextFieldInput';
import { GET_CONNECTED_ACCOUNT_BY_ID } from '@/settings/accounts/graphql/queries/getConnectedAccountById';
import { useMyConnectedAccounts } from '@/settings/accounts/hooks/useMyConnectedAccounts';
import { useTriggerApisOAuth } from '@/settings/accounts/hooks/useTriggerApiOAuth';
import { Select } from '@/ui/input/components/Select';
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
@@ -15,7 +15,6 @@ import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/Drop
import { GenericDropdownContentWidth } from '@/ui/layout/dropdown/constants/GenericDropdownContentWidth';
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
import { workflowVisualizerWorkflowIdComponentState } from '@/workflow/states/workflowVisualizerWorkflowIdComponentState';
import { type WorkflowEmailAction } from '@/workflow/types/WorkflowEmailAction';
@@ -23,6 +22,7 @@ import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowS
import { WorkflowStepFooter } from '@/workflow/workflow-steps/components/WorkflowStepFooter';
import { useEmailForm } from '@/workflow/workflow-steps/workflow-actions/hooks/useEmailForm';
import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker';
import { useQuery } from '@apollo/client/react';
import { t } from '@lingui/core/macro';
import { useEffect, useState } from 'react';
import { ConnectedAccountProvider, SettingsPath } from 'twenty-shared/types';
@@ -52,7 +52,6 @@ export const WorkflowEditActionEmailBase = ({
action,
actionOptions,
}: WorkflowEditActionEmailBaseProps) => {
const currentWorkspaceMember = useAtomStateValue(currentWorkspaceMemberState);
const { triggerApisOAuth } = useTriggerApisOAuth();
const workflowVisualizerWorkflowId = useAtomComponentStateValue(
@@ -110,43 +109,40 @@ export const WorkflowEditActionEmailBase = ({
handleFieldChange('connectedAccountId', connectedAccountId);
};
const filter: { or: object[] } = {
or: [
{
userWorkspaceId: {
eq: currentWorkspaceMember?.id,
},
},
],
};
const { accounts: myAccounts, loading: myAccountsLoading } =
useMyConnectedAccounts();
if (
isDefined(action.settings.input.connectedAccountId) &&
action.settings.input.connectedAccountId !== ''
) {
filter.or.push({
id: {
eq: action.settings.input.connectedAccountId,
},
});
}
const configuredAccountId = formData.connectedAccountId;
const isConfiguredAccountMine = myAccounts.some(
(account) => account.id === configuredAccountId,
);
const { records: accounts, loading } = useFindManyRecords<ConnectedAccount>({
objectNameSingular: 'connectedAccount',
filter,
recordGqlFields: {
id: true,
handle: true,
provider: true,
scopes: true,
userWorkspaceId: true,
connectionParameters: true,
},
const { data: otherAccountData, loading: otherAccountLoading } = useQuery<{
connectedAccountById: Pick<
ConnectedAccount,
| 'id'
| 'handle'
| 'provider'
| 'scopes'
| 'userWorkspaceId'
| 'connectionParameters'
> | null;
}>(GET_CONNECTED_ACCOUNT_BY_ID, {
variables: { id: configuredAccountId },
skip:
!isDefined(configuredAccountId) ||
configuredAccountId === '' ||
isConfiguredAccountMine,
});
const selectedAccount = accounts.find(
(account) => account.id === formData.connectedAccountId,
);
const loading = myAccountsLoading || otherAccountLoading;
const otherAccount = otherAccountData?.connectedAccountById ?? null;
const selectedAccount =
myAccounts.find((account) => account.id === configuredAccountId) ??
otherAccount ??
undefined;
const missingDraftScopes =
action.type === 'DRAFT_EMAIL' && isDefined(selectedAccount)
@@ -169,7 +165,7 @@ export const WorkflowEditActionEmailBase = ({
};
const connectedAccountOptions: SelectOption<string | null>[] = [];
accounts.forEach((account) => {
myAccounts.forEach((account) => {
if (
account.provider === ConnectedAccountProvider.IMAP_SMTP_CALDAV &&
!isDefined(account.connectionParameters?.SMTP)
@@ -177,17 +173,25 @@ export const WorkflowEditActionEmailBase = ({
return;
}
const selectOption = {
connectedAccountOptions.push({
label: account.handle,
value: account.id,
};
if (account.userWorkspaceId === currentWorkspaceMember?.id) {
connectedAccountOptions.push(selectOption);
} else {
emptyOption = selectOption;
}
});
});
if (
isDefined(otherAccount) &&
!(
otherAccount.provider === ConnectedAccountProvider.IMAP_SMTP_CALDAV &&
!isDefined(otherAccount.connectionParameters?.SMTP)
)
) {
emptyOption = {
label: otherAccount.handle,
value: otherAccount.id,
};
}
const navigate = useNavigateSettings();
const { closeSidePanelMenu } = useSidePanelMenu();
@@ -12,10 +12,10 @@ import { v4 } from 'uuid';
import { ActiveOrSuspendedWorkspaceCommandRunner } from 'src/database/commands/command-runners/active-or-suspended-workspace.command-runner';
import { WorkspaceIteratorService } from 'src/database/commands/command-runners/workspace-iterator.service';
import { type RunOnWorkspaceArgs } from 'src/database/commands/command-runners/workspace.command-runner';
import { RegisteredWorkspaceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-workspace-command.decorator';
import { ApplicationService } from 'src/engine/core-modules/application/application.service';
import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
import { RegisteredWorkspaceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-workspace-command.decorator';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type';
@@ -779,6 +779,7 @@ export class BackfillPageLayoutsAndFieldsWidgetViewFieldsCommand extends ActiveO
deletedAt: null,
conditionalDisplay: null,
overrides: null,
universalOverrides: null,
};
widgetsToCreate.push(widget);
@@ -36,6 +36,6 @@ export const fromPageLayoutWidgetManifestToUniversalFlatPageLayoutWidget = ({
createdAt: now,
updatedAt: now,
deletedAt: null,
overrides: null,
universalOverrides: null,
};
};
@@ -0,0 +1,32 @@
import { Field, ObjectType, OmitType } from '@nestjs/graphql';
import { IsOptional } from 'class-validator';
import { ConnectionParametersDTO } from 'src/engine/core-modules/imap-smtp-caldav-connection/dtos/imap-smtp-caldav-connection.dto';
import { ConnectedAccountDTO } from 'src/engine/metadata-modules/connected-account/dtos/connected-account.dto';
@ObjectType('PublicConnectionParametersOutput')
class PublicConnectionParametersDTO extends OmitType(ConnectionParametersDTO, [
'password',
] as const) {}
@ObjectType('PublicImapSmtpCaldavConnectionParameters')
class PublicImapSmtpCaldavConnectionParametersDTO {
@Field(() => PublicConnectionParametersDTO, { nullable: true })
IMAP?: PublicConnectionParametersDTO;
@Field(() => PublicConnectionParametersDTO, { nullable: true })
SMTP?: PublicConnectionParametersDTO;
@Field(() => PublicConnectionParametersDTO, { nullable: true })
CALDAV?: PublicConnectionParametersDTO;
}
@ObjectType('ConnectedAccountPublicDTO')
export class ConnectedAccountPublicDTO extends OmitType(ConnectedAccountDTO, [
'connectionParameters',
] as const) {
@IsOptional()
@Field(() => PublicImapSmtpCaldavConnectionParametersDTO, { nullable: true })
connectionParameters: PublicImapSmtpCaldavConnectionParametersDTO | null;
}
@@ -13,6 +13,7 @@ import { SettingsPermissionGuard } from 'src/engine/guards/settings-permission.g
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
import { ConnectedAccountMetadataService } from 'src/engine/metadata-modules/connected-account/connected-account-metadata.service';
import { ConnectedAccountDTO } from 'src/engine/metadata-modules/connected-account/dtos/connected-account.dto';
import { ConnectedAccountPublicDTO } from 'src/engine/metadata-modules/connected-account/dtos/connected-account-public.dto';
import { ConnectedAccountGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/connected-account/interceptors/connected-account-graphql-api-exception.interceptor';
@UseGuards(WorkspaceAuthGuard)
@@ -35,6 +36,18 @@ export class ConnectedAccountResolver {
});
}
@Query(() => ConnectedAccountPublicDTO, { nullable: true })
@UseGuards(NoPermissionGuard)
async connectedAccountById(
@Args('id', { type: () => UUIDScalarType }) id: string,
@AuthWorkspace() workspace: WorkspaceEntity,
): Promise<ConnectedAccountPublicDTO | null> {
return this.connectedAccountMetadataService.findById({
id,
workspaceId: workspace.id,
});
}
@Query(() => [ConnectedAccountDTO])
@UseGuards(SettingsPermissionGuard(PermissionFlagType.CONNECTED_ACCOUNTS))
async connectedAccounts(
@@ -1,4 +1,4 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should match snapshot 1`] = `
{
@@ -195,14 +195,14 @@ exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should ma
"deletedAt",
"conditionalDisplay",
"isActive",
"overrides",
"universalOverrides",
],
"propertiesToStringify": [
"gridPosition",
"position",
"universalConfiguration",
"conditionalDisplay",
"overrides",
"universalOverrides",
],
},
"permissionFlag": {
@@ -921,6 +921,7 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = {
toCompare: false,
toStringify: false,
universalProperty: 'pageLayoutTabUniversalIdentifier',
isOverridable: true,
},
conditionalDisplay: {
toCompare: true,
@@ -937,7 +938,7 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = {
overrides: {
toCompare: true,
toStringify: true,
universalProperty: undefined,
universalProperty: 'universalOverrides',
},
},
pageLayoutTab: {
@@ -36,6 +36,7 @@ export const splitEntitiesByResetStrategy = <
...entity,
isActive: true as const,
overrides: null,
...('universalOverrides' in entity ? { universalOverrides: null } : {}),
updatedAt: now,
});
}
@@ -8,4 +8,5 @@ export const FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES = [
'position',
'configuration',
'conditionalDisplay',
'pageLayoutTabId',
] as const satisfies MetadataEntityPropertyName<'pageLayoutWidget'>[];
@@ -75,6 +75,7 @@ export const fromCreatePageLayoutWidgetInputToFlatPageLayoutWidgetToCreate = ({
applicationUniversalIdentifier: flatApplication.universalIdentifier,
conditionalDisplay: null,
overrides: null,
universalOverrides: null,
universalConfiguration:
fromPageLayoutWidgetConfigurationToUniversalConfiguration({
configuration: createPageLayoutWidgetInput.configuration,
@@ -7,6 +7,7 @@ import {
import { getMetadataEntityRelationProperties } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-entity-relation-properties.util';
import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
import { fromPageLayoutWidgetConfigurationToUniversalConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-configuration-to-universal-configuration.util';
import { fromPageLayoutWidgetOverridesToUniversalOverrides } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-overrides-to-universal-overrides.util';
import { type FromEntityToFlatEntityArgs } from 'src/engine/workspace-cache/types/from-entity-to-flat-entity-args.type';
type FromPageLayoutWidgetEntityToFlatPageLayoutWidgetArgs =
@@ -81,6 +82,18 @@ export const fromPageLayoutWidgetEntityToFlatPageLayoutWidget = ({
viewUniversalIdentifierById,
});
const pageLayoutTabUniversalIdentifierById = Object.fromEntries(
pageLayoutTabIdToUniversalIdentifierMap.entries(),
);
const universalOverrides = isDefined(pageLayoutWidgetEntity.overrides)
? fromPageLayoutWidgetOverridesToUniversalOverrides({
overrides: pageLayoutWidgetEntity.overrides,
pageLayoutTabUniversalIdentifierById,
shouldThrowOnMissingIdentifier: false,
})
: null;
return {
...pageLayoutWidgetEntityWithoutRelations,
createdAt: pageLayoutWidgetEntity.createdAt.toISOString(),
@@ -93,5 +106,6 @@ export const fromPageLayoutWidgetEntityToFlatPageLayoutWidget = ({
pageLayoutTabUniversalIdentifier,
objectMetadataUniversalIdentifier,
universalConfiguration: configurationWithUniversalIdentifiers,
universalOverrides,
};
};
@@ -0,0 +1,54 @@
import { type FormatRecordSerializedRelationProperties } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import {
FlatEntityMapsException,
FlatEntityMapsExceptionCode,
} from 'src/engine/metadata-modules/flat-entity/exceptions/flat-entity-maps.exception';
import { type PageLayoutWidgetOverrides } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity';
type UniversalPageLayoutWidgetOverrides =
FormatRecordSerializedRelationProperties<PageLayoutWidgetOverrides>;
export const fromPageLayoutWidgetOverridesToUniversalOverrides = ({
overrides,
pageLayoutTabUniversalIdentifierById,
shouldThrowOnMissingIdentifier = true,
}: {
overrides: PageLayoutWidgetOverrides;
pageLayoutTabUniversalIdentifierById: Partial<Record<string, string>>;
shouldThrowOnMissingIdentifier?: boolean;
}): UniversalPageLayoutWidgetOverrides => {
const { pageLayoutTabId, ...scalarOverrides } = overrides;
if (!isDefined(pageLayoutTabId)) {
return {
...scalarOverrides,
...(pageLayoutTabId === null
? { pageLayoutTabUniversalIdentifier: null }
: {}),
};
}
const pageLayoutTabUniversalIdentifier =
pageLayoutTabUniversalIdentifierById[pageLayoutTabId];
if (!isDefined(pageLayoutTabUniversalIdentifier)) {
if (shouldThrowOnMissingIdentifier) {
throw new FlatEntityMapsException(
`PageLayoutTab universal identifier not found for id: ${pageLayoutTabId}`,
FlatEntityMapsExceptionCode.RELATION_UNIVERSAL_IDENTIFIER_NOT_FOUND,
);
}
return {
...scalarOverrides,
pageLayoutTabUniversalIdentifier: null,
};
}
return {
...scalarOverrides,
pageLayoutTabUniversalIdentifier,
};
};
@@ -11,6 +11,7 @@ import { FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES } from 'src/engine/metadata
import { type FlatPageLayoutWidgetMaps } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type';
import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
import { fromPageLayoutWidgetConfigurationToUniversalConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-configuration-to-universal-configuration.util';
import { fromPageLayoutWidgetOverridesToUniversalOverrides } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-overrides-to-universal-overrides.util';
import { type UpdatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout-widget/dtos/inputs/update-page-layout-widget.input';
import {
PageLayoutWidgetException,
@@ -35,6 +36,7 @@ export const fromUpdatePageLayoutWidgetInputToFlatPageLayoutWidgetToUpdateOrThro
flatFrontComponentMaps,
flatViewFieldGroupMaps,
flatViewMaps,
flatPageLayoutTabMaps,
callerApplicationUniversalIdentifier,
workspaceCustomApplicationUniversalIdentifier,
}: {
@@ -49,6 +51,7 @@ export const fromUpdatePageLayoutWidgetInputToFlatPageLayoutWidgetToUpdateOrThro
| 'flatFrontComponentMaps'
| 'flatViewFieldGroupMaps'
| 'flatViewMaps'
| 'flatPageLayoutTabMaps'
>): FlatPageLayoutWidget => {
const { id: pageLayoutWidgetToUpdateId } =
extractAndSanitizeObjectStringFields(rawUpdatePageLayoutWidgetInput, [
@@ -103,7 +106,21 @@ export const fromUpdatePageLayoutWidgetInputToFlatPageLayoutWidgetToUpdateOrThro
update: updatedEditableProperties,
}),
overrides,
};
} as FlatPageLayoutWidget;
if (updatedEditableProperties.pageLayoutTabId !== undefined) {
const { pageLayoutTabUniversalIdentifier } =
resolveEntityRelationUniversalIdentifiers({
metadataName: 'pageLayoutWidget',
foreignKeyValues: {
pageLayoutTabId: flatPageLayoutWidgetToUpdate.pageLayoutTabId,
},
flatEntityMaps: { flatPageLayoutTabMaps },
});
flatPageLayoutWidgetToUpdate.pageLayoutTabUniversalIdentifier =
pageLayoutTabUniversalIdentifier;
}
if (updatedEditableProperties.objectMetadataId !== undefined) {
const { objectMetadataUniversalIdentifier } =
@@ -133,5 +150,16 @@ export const fromUpdatePageLayoutWidgetInputToFlatPageLayoutWidgetToUpdateOrThro
});
}
if (isDefined(overrides)) {
flatPageLayoutWidgetToUpdate.universalOverrides =
fromPageLayoutWidgetOverridesToUniversalOverrides({
overrides,
pageLayoutTabUniversalIdentifierById:
flatPageLayoutTabMaps.universalIdentifierById,
});
} else {
flatPageLayoutWidgetToUpdate.universalOverrides = null;
}
return flatPageLayoutWidgetToUpdate;
};
@@ -5,6 +5,7 @@ import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-la
import { type FlatPageLayoutWidgetMaps } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type';
import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type';
import { resolveOverridableEntityProperty } from 'src/engine/metadata-modules/utils/resolve-overridable-entity-property.util';
export type FlatPageLayoutTabWithWidgets = FlatPageLayoutTab & {
widgets: FlatPageLayoutWidget[];
@@ -14,6 +15,9 @@ export type FlatPageLayoutWithTabsAndWidgets = FlatPageLayout & {
tabs: FlatPageLayoutTabWithWidgets[];
};
const getResolvedPageLayoutTabId = (widget: FlatPageLayoutWidget): string =>
resolveOverridableEntityProperty(widget, 'pageLayoutTabId');
export const reconstructFlatPageLayoutWithTabsAndWidgets = ({
layout,
flatPageLayoutTabMaps,
@@ -33,7 +37,10 @@ export const reconstructFlatPageLayoutWithTabsAndWidgets = ({
flatPageLayoutWidgetMaps.byUniversalIdentifier,
)
.filter(isDefined)
.filter((widget) => widget.pageLayoutTabId === tab.id && widget.isActive);
.filter(
(widget) =>
getResolvedPageLayoutTabId(widget) === tab.id && widget.isActive,
);
return {
...tab,
@@ -22,6 +22,11 @@ import { AllPageLayoutWidgetConfiguration } from 'src/engine/metadata-modules/pa
@InputType()
export class UpdatePageLayoutWidgetInput {
@Field(() => UUIDScalarType, { nullable: true })
@IsUUID()
@IsOptional()
pageLayoutTabId?: string;
@Field({ nullable: true })
@IsString()
@IsOptional()
@@ -4,6 +4,7 @@ import {
PageLayoutWidgetConditionalDisplay,
PageLayoutWidgetPosition,
type GridPosition,
type SerializedRelation,
} from 'twenty-shared/types';
import {
Column,
@@ -30,6 +31,7 @@ export type PageLayoutWidgetOverrides = {
title?: string;
position?: PageLayoutWidgetPosition | null;
conditionalDisplay?: PageLayoutWidgetConditionalDisplay | null;
pageLayoutTabId?: SerializedRelation;
};
@Entity({ name: 'pageLayoutWidget', schema: 'core' })
@@ -18,6 +18,7 @@ import {
import { CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout-widget/dtos/inputs/create-page-layout-widget.input';
import { UpdatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout-widget/dtos/inputs/update-page-layout-widget.input';
import { type PageLayoutWidgetDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/page-layout-widget.dto';
import { resolveOverridableEntityProperty } from 'src/engine/metadata-modules/utils/resolve-overridable-entity-property.util';
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
import {
PageLayoutWidgetException,
@@ -162,8 +163,8 @@ export class PageLayoutWidgetService {
.filter(isDefined)
.filter(
(widget) =>
widget.pageLayoutTabId === pageLayoutTabId &&
!isDefined(widget.deletedAt),
resolveOverridableEntityProperty(widget, 'pageLayoutTabId') ===
pageLayoutTabId && !isDefined(widget.deletedAt),
)
.sort(
(widgetA, widgetB) =>
@@ -317,6 +318,7 @@ export class PageLayoutWidgetService {
flatFrontComponentMaps: existingFlatFrontComponentMaps,
flatViewFieldGroupMaps: existingFlatViewFieldGroupMaps,
flatViewMaps: existingFlatViewMaps,
flatPageLayoutTabMaps: existingFlatPageLayoutTabMaps,
},
{ workspaceCustomFlatApplication },
] = await Promise.all([
@@ -329,6 +331,7 @@ export class PageLayoutWidgetService {
'flatFrontComponentMaps',
'flatViewFieldGroupMaps',
'flatViewMaps',
'flatPageLayoutTabMaps',
],
},
),
@@ -368,6 +371,7 @@ export class PageLayoutWidgetService {
flatFrontComponentMaps: existingFlatFrontComponentMaps,
flatViewFieldGroupMaps: existingFlatViewFieldGroupMaps,
flatViewMaps: existingFlatViewMaps,
flatPageLayoutTabMaps: existingFlatPageLayoutTabMaps,
callerApplicationUniversalIdentifier:
workspaceCustomFlatApplication.universalIdentifier,
workspaceCustomApplicationUniversalIdentifier:
@@ -116,6 +116,7 @@ export class PageLayoutResetService {
const widgetToUpdate: FlatPageLayoutWidget = {
...widget,
overrides: null,
universalOverrides: null,
updatedAt: now,
};
@@ -547,15 +548,10 @@ export class PageLayoutResetService {
now,
});
const viewFieldsToReset = fieldsToReset.map((field) => ({
...field,
universalOverrides: null,
}));
return {
viewFieldGroupsToUpdate: groupsToReset,
viewFieldGroupsToDelete: groupsToDelete,
viewFieldsToUpdate: viewFieldsToReset,
viewFieldsToUpdate: fieldsToReset,
viewFieldsToDelete: fieldsToDelete,
};
}
@@ -10,6 +10,7 @@ import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
import { resolveEntityRelationUniversalIdentifiers } from 'src/engine/metadata-modules/flat-entity/utils/resolve-entity-relation-universal-identifiers.util';
import { splitEntitiesByRemovalStrategy } from 'src/engine/metadata-modules/flat-entity/utils/split-entities-by-removal-strategy.util';
import { FLAT_PAGE_LAYOUT_TAB_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-page-layout-tab/constants/flat-page-layout-tab-editable-properties.constant';
import { type FlatPageLayoutTabMaps } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab-maps.type';
@@ -18,6 +19,7 @@ import { FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES } from 'src/engine/metadata
import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
import { buildFlatPageLayoutWidgetCommonProperties } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/build-flat-page-layout-widget-common-properties.util';
import { fromPageLayoutWidgetConfigurationToUniversalConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-configuration-to-universal-configuration.util';
import { fromPageLayoutWidgetOverridesToUniversalOverrides } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-overrides-to-universal-overrides.util';
import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type';
import { reconstructFlatPageLayoutWithTabsAndWidgets } from 'src/engine/metadata-modules/flat-page-layout/utils/reconstruct-flat-page-layout-with-tabs-and-widgets.util';
import { UpdatePageLayoutTabWithWidgetsInput } from 'src/engine/metadata-modules/page-layout-tab/dtos/inputs/update-page-layout-tab-with-widgets.input';
@@ -468,11 +470,16 @@ export class PageLayoutUpdateService {
const allWidgetsToUpdate: FlatPageLayoutWidget[] = [];
const allWidgetsToDelete: FlatPageLayoutWidget[] = [];
const widgetIdsAcrossAllTabs = new Set(
tabs.flatMap((tab) => tab.widgets.map((widget) => widget.id)),
);
for (const tabInput of tabs) {
const { widgetsToCreate, widgetsToUpdate, widgetsToDelete } =
this.computeWidgetOperationsForTab({
tabId: tabInput.id,
widgets: tabInput.widgets,
widgetIdsAcrossAllTabs,
flatPageLayoutWidgetMaps,
flatPageLayoutTabMaps,
flatObjectMetadataMaps,
@@ -500,6 +507,7 @@ export class PageLayoutUpdateService {
private computeWidgetOperationsForTab({
tabId,
widgets,
widgetIdsAcrossAllTabs,
flatPageLayoutWidgetMaps,
flatPageLayoutTabMaps,
flatObjectMetadataMaps,
@@ -513,6 +521,7 @@ export class PageLayoutUpdateService {
}: {
tabId: string;
widgets: UpdatePageLayoutWidgetWithIdInput[];
widgetIdsAcrossAllTabs: Set<string>;
workspaceId: string;
workspaceCustomApplicationId: string;
workspaceCustomApplicationUniversalIdentifier: string;
@@ -538,11 +547,15 @@ export class PageLayoutUpdateService {
});
}
const existingWidgets = Object.values(
flatPageLayoutWidgetMaps.byUniversalIdentifier,
)
.filter(isDefined)
.filter((widget) => widget.pageLayoutTabId === tabId);
const widgetIdsInCurrentTabInput = new Set(
widgets.map((widget) => widget.id),
);
const existingWidgets = this.findWidgetsInTabOrMovingToTab({
tabId,
widgetIdsInCurrentTabInput,
flatPageLayoutWidgetMaps,
});
const resolvedExistingWidgets = existingWidgets.map(
resolveFlatEntityOverridableProperties,
@@ -587,6 +600,7 @@ export class PageLayoutUpdateService {
workspaceCustomApplicationUniversalIdentifier,
conditionalDisplay: null,
overrides: null,
universalOverrides: null,
isActive: true,
universalConfiguration:
fromPageLayoutWidgetConfigurationToUniversalConfiguration({
@@ -604,120 +618,45 @@ export class PageLayoutUpdateService {
);
const widgetsToUpdate: FlatPageLayoutWidget[] = entitiesToUpdate.map(
(widgetInput) => {
const existingWidget = findFlatEntityByIdInFlatEntityMapsOrThrow({
flatEntityId: widgetInput.id,
flatEntityMaps: flatPageLayoutWidgetMaps,
});
const shouldOverride = isCallerOverridingEntity({
callerApplicationUniversalIdentifier:
workspaceCustomApplicationUniversalIdentifier,
entityApplicationUniversalIdentifier:
existingWidget.applicationUniversalIdentifier,
workspaceCustomApplicationUniversalIdentifier,
});
const commonProperties = buildFlatPageLayoutWidgetCommonProperties({
(widgetInput) =>
this.buildUpdatedFlatPageLayoutWidget({
widgetInput,
flatPageLayoutWidgetMaps,
flatPageLayoutTabMaps,
flatObjectMetadataMaps,
});
const updatedConfiguration = widgetInput.configuration ?? null;
const { overrides, updatedEditableProperties } =
sanitizeOverridableEntityInput({
metadataName: 'pageLayoutWidget',
existingFlatEntity: existingWidget,
updatedEditableProperties: {
...commonProperties,
configuration: updatedConfiguration,
},
shouldOverride,
});
return {
...existingWidget,
...updatedEditableProperties,
overrides,
updatedAt: now.toISOString(),
...(isDefined(updatedConfiguration) && {
universalConfiguration:
fromPageLayoutWidgetConfigurationToUniversalConfiguration({
configuration: updatedConfiguration,
fieldMetadataUniversalIdentifierById:
flatFieldMetadataMaps.universalIdentifierById,
frontComponentUniversalIdentifierById:
flatFrontComponentMaps.universalIdentifierById,
viewFieldGroupUniversalIdentifierById:
flatViewFieldGroupMaps.universalIdentifierById,
viewUniversalIdentifierById:
flatViewMaps.universalIdentifierById,
}),
}),
};
},
flatFieldMetadataMaps,
flatFrontComponentMaps,
flatViewFieldGroupMaps,
flatViewMaps,
workspaceCustomApplicationUniversalIdentifier,
now,
}),
);
const widgetsToRestoreAndUpdate: FlatPageLayoutWidget[] =
entitiesToRestoreAndUpdate.map((widgetInput) => {
const existingWidget = findFlatEntityByIdInFlatEntityMapsOrThrow({
flatEntityId: widgetInput.id,
flatEntityMaps: flatPageLayoutWidgetMaps,
});
const shouldOverride = isCallerOverridingEntity({
callerApplicationUniversalIdentifier:
workspaceCustomApplicationUniversalIdentifier,
entityApplicationUniversalIdentifier:
existingWidget.applicationUniversalIdentifier,
workspaceCustomApplicationUniversalIdentifier,
});
const commonProperties = buildFlatPageLayoutWidgetCommonProperties({
entitiesToRestoreAndUpdate.map((widgetInput) => ({
...this.buildUpdatedFlatPageLayoutWidget({
widgetInput,
flatPageLayoutWidgetMaps,
flatPageLayoutTabMaps,
flatObjectMetadataMaps,
});
flatFieldMetadataMaps,
flatFrontComponentMaps,
flatViewFieldGroupMaps,
flatViewMaps,
workspaceCustomApplicationUniversalIdentifier,
now,
}),
isActive: true,
}));
const restoredConfiguration = widgetInput.configuration ?? null;
const { overrides, updatedEditableProperties } =
sanitizeOverridableEntityInput({
metadataName: 'pageLayoutWidget',
existingFlatEntity: existingWidget,
updatedEditableProperties: {
...commonProperties,
configuration: restoredConfiguration,
},
shouldOverride,
});
return {
...existingWidget,
...updatedEditableProperties,
overrides,
isActive: true,
updatedAt: now.toISOString(),
...(isDefined(restoredConfiguration) && {
universalConfiguration:
fromPageLayoutWidgetConfigurationToUniversalConfiguration({
configuration: restoredConfiguration,
fieldMetadataUniversalIdentifierById:
flatFieldMetadataMaps.universalIdentifierById,
frontComponentUniversalIdentifierById:
flatFrontComponentMaps.universalIdentifierById,
viewFieldGroupUniversalIdentifierById:
flatViewFieldGroupMaps.universalIdentifierById,
viewUniversalIdentifierById:
flatViewMaps.universalIdentifierById,
}),
}),
};
const widgetIdsToRemoveExcludingMovedToOtherTabs =
this.excludeWidgetsMovedToOtherTabs({
idsToRemove,
widgetIdsAcrossAllTabs,
});
const widgetsToRemove = idsToRemove
const widgetsToRemove = widgetIdsToRemoveExcludingMovedToOtherTabs
.map((widgetId) =>
findFlatEntityByIdInFlatEntityMaps({
flatEntityId: widgetId,
@@ -743,6 +682,162 @@ export class PageLayoutUpdateService {
};
}
private buildUpdatedFlatPageLayoutWidget({
widgetInput,
flatPageLayoutWidgetMaps,
flatPageLayoutTabMaps,
flatObjectMetadataMaps,
flatFieldMetadataMaps,
flatFrontComponentMaps,
flatViewFieldGroupMaps,
flatViewMaps,
workspaceCustomApplicationUniversalIdentifier,
now,
}: {
widgetInput: UpdatePageLayoutWidgetWithIdInput;
workspaceCustomApplicationUniversalIdentifier: string;
now: Date;
} & Pick<
AllFlatEntityMaps,
| 'flatObjectMetadataMaps'
| 'flatFieldMetadataMaps'
| 'flatFrontComponentMaps'
| 'flatViewFieldGroupMaps'
| 'flatViewMaps'
| 'flatPageLayoutTabMaps'
| 'flatPageLayoutWidgetMaps'
>): FlatPageLayoutWidget {
const existingWidget = findFlatEntityByIdInFlatEntityMapsOrThrow({
flatEntityId: widgetInput.id,
flatEntityMaps: flatPageLayoutWidgetMaps,
});
const shouldOverride = isCallerOverridingEntity({
callerApplicationUniversalIdentifier:
workspaceCustomApplicationUniversalIdentifier,
entityApplicationUniversalIdentifier:
existingWidget.applicationUniversalIdentifier,
workspaceCustomApplicationUniversalIdentifier,
});
const configuration = widgetInput.configuration ?? null;
const editableProperties: Partial<FlatPageLayoutWidget> = {
title: widgetInput.title,
type: widgetInput.type,
objectMetadataId: widgetInput.objectMetadataId ?? null,
gridPosition: widgetInput.gridPosition,
position: widgetInput.position ?? null,
configuration,
pageLayoutTabId: widgetInput.pageLayoutTabId,
};
if (widgetInput.conditionalDisplay !== undefined) {
editableProperties.conditionalDisplay =
widgetInput.conditionalDisplay ?? null;
}
const { overrides, updatedEditableProperties } =
sanitizeOverridableEntityInput({
metadataName: 'pageLayoutWidget',
existingFlatEntity: existingWidget,
updatedEditableProperties: editableProperties,
shouldOverride,
});
const updatedWidget: FlatPageLayoutWidget = {
...existingWidget,
...updatedEditableProperties,
overrides,
updatedAt: now.toISOString(),
};
if (updatedEditableProperties.pageLayoutTabId !== undefined) {
const { pageLayoutTabUniversalIdentifier } =
resolveEntityRelationUniversalIdentifiers({
metadataName: 'pageLayoutWidget',
foreignKeyValues: {
pageLayoutTabId: updatedWidget.pageLayoutTabId,
},
flatEntityMaps: { flatPageLayoutTabMaps },
});
updatedWidget.pageLayoutTabUniversalIdentifier =
pageLayoutTabUniversalIdentifier;
}
if (updatedEditableProperties.objectMetadataId !== undefined) {
const { objectMetadataUniversalIdentifier } =
resolveEntityRelationUniversalIdentifiers({
metadataName: 'pageLayoutWidget',
foreignKeyValues: {
objectMetadataId: updatedWidget.objectMetadataId,
},
flatEntityMaps: { flatObjectMetadataMaps },
});
updatedWidget.objectMetadataUniversalIdentifier =
objectMetadataUniversalIdentifier;
}
if (isDefined(overrides)) {
updatedWidget.universalOverrides =
fromPageLayoutWidgetOverridesToUniversalOverrides({
overrides,
pageLayoutTabUniversalIdentifierById:
flatPageLayoutTabMaps.universalIdentifierById,
});
} else {
updatedWidget.universalOverrides = null;
}
if (isDefined(configuration)) {
updatedWidget.universalConfiguration =
fromPageLayoutWidgetConfigurationToUniversalConfiguration({
configuration,
fieldMetadataUniversalIdentifierById:
flatFieldMetadataMaps.universalIdentifierById,
frontComponentUniversalIdentifierById:
flatFrontComponentMaps.universalIdentifierById,
viewFieldGroupUniversalIdentifierById:
flatViewFieldGroupMaps.universalIdentifierById,
viewUniversalIdentifierById: flatViewMaps.universalIdentifierById,
});
}
return updatedWidget;
}
private findWidgetsInTabOrMovingToTab({
tabId,
widgetIdsInCurrentTabInput,
flatPageLayoutWidgetMaps,
}: {
tabId: string;
widgetIdsInCurrentTabInput: Set<string>;
flatPageLayoutWidgetMaps: AllFlatEntityMaps['flatPageLayoutWidgetMaps'];
}): FlatPageLayoutWidget[] {
return Object.values(flatPageLayoutWidgetMaps.byUniversalIdentifier)
.filter(isDefined)
.filter(
(widget) =>
widget.pageLayoutTabId === tabId ||
widgetIdsInCurrentTabInput.has(widget.id),
);
}
private excludeWidgetsMovedToOtherTabs({
idsToRemove,
widgetIdsAcrossAllTabs,
}: {
idsToRemove: string[];
widgetIdsAcrossAllTabs: Set<string>;
}): string[] {
return idsToRemove.filter(
(widgetId) => !widgetIdsAcrossAllTabs.has(widgetId),
);
}
private validateChartFieldReferences({
widgetInput,
flatFieldMetadataMaps,
@@ -1,7 +1,7 @@
import {
type GridPosition,
type PageLayoutWidgetConditionalDisplay,
type PageLayoutWidgetPosition,
type GridPosition,
} from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
@@ -110,5 +110,6 @@ export const createStandardPageLayoutWidgetFlatMetadata = ({
deletedAt: null,
conditionalDisplay: conditionalDisplay ?? null,
overrides: null,
universalOverrides: null,
};
};
@@ -19,13 +19,13 @@ export const computeStandardBlocklistViewFieldGroups = (
isVisible: true,
},
}),
blocklistRecordPageFieldsOther: createStandardViewFieldGroupFlatMetadata({
blocklistRecordPageFieldsSystem: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'blocklist',
context: {
viewName: 'blocklistRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -23,14 +23,14 @@ export const computeStandardCalendarChannelEventAssociationViewFieldGroups = (
isVisible: true,
},
}),
calendarChannelEventAssociationRecordPageFieldsOther:
calendarChannelEventAssociationRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'calendarChannelEventAssociation',
context: {
viewName: 'calendarChannelEventAssociationRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -20,14 +20,14 @@ export const computeStandardCalendarChannelViewFieldGroups = (
isVisible: true,
},
}),
calendarChannelRecordPageFieldsOther:
calendarChannelRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'calendarChannel',
context: {
viewName: 'calendarChannelRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -23,14 +23,14 @@ export const computeStandardCalendarEventParticipantViewFieldGroups = (
isVisible: true,
},
}),
calendarEventParticipantRecordPageFieldsOther:
calendarEventParticipantRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'calendarEventParticipant',
context: {
viewName: 'calendarEventParticipantRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -19,29 +19,38 @@ export const computeStandardCompanyViewFieldGroups = (
isVisible: true,
},
}),
companyRecordPageFieldsAdditional: createStandardViewFieldGroupFlatMetadata(
{
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldGroupName: 'additional',
name: 'Additional',
position: 1,
isVisible: true,
},
},
),
companyRecordPageFieldsOther: createStandardViewFieldGroupFlatMetadata({
companyRecordPageFieldsBusiness: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'business',
name: 'Business',
position: 1,
isVisible: true,
},
}),
companyRecordPageFieldsContact: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldGroupName: 'contact',
name: 'Contact',
position: 2,
isVisible: true,
},
}),
companyRecordPageFieldsSystem: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldGroupName: 'system',
name: 'System',
position: 3,
isVisible: true,
},
}),
};
};
@@ -20,14 +20,14 @@ export const computeStandardConnectedAccountViewFieldGroups = (
isVisible: true,
},
}),
connectedAccountRecordPageFieldsOther:
connectedAccountRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'connectedAccount',
context: {
viewName: 'connectedAccountRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -20,14 +20,14 @@ export const computeStandardFavoriteFolderViewFieldGroups = (
isVisible: true,
},
}),
favoriteFolderRecordPageFieldsOther:
favoriteFolderRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'favoriteFolder',
context: {
viewName: 'favoriteFolderRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -19,13 +19,13 @@ export const computeStandardFavoriteViewFieldGroups = (
isVisible: true,
},
}),
favoriteRecordPageFieldsOther: createStandardViewFieldGroupFlatMetadata({
favoriteRecordPageFieldsSystem: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'favorite',
context: {
viewName: 'favoriteRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -25,15 +25,15 @@ export const computeStandardMessageChannelMessageAssociationMessageFolderViewFie
isVisible: true,
},
}),
messageChannelMessageAssociationMessageFolderRecordPageFieldsOther:
messageChannelMessageAssociationMessageFolderRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'messageChannelMessageAssociationMessageFolder',
context: {
viewName:
'messageChannelMessageAssociationMessageFolderRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -23,14 +23,14 @@ export const computeStandardMessageChannelMessageAssociationViewFieldGroups = (
isVisible: true,
},
}),
messageChannelMessageAssociationRecordPageFieldsOther:
messageChannelMessageAssociationRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'messageChannelMessageAssociation',
context: {
viewName: 'messageChannelMessageAssociationRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -20,14 +20,14 @@ export const computeStandardMessageChannelViewFieldGroups = (
isVisible: true,
},
}),
messageChannelRecordPageFieldsOther:
messageChannelRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'messageChannel',
context: {
viewName: 'messageChannelRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -20,14 +20,14 @@ export const computeStandardMessageFolderViewFieldGroups = (
isVisible: true,
},
}),
messageFolderRecordPageFieldsOther:
messageFolderRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'messageFolder',
context: {
viewName: 'messageFolderRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -20,14 +20,14 @@ export const computeStandardMessageParticipantViewFieldGroups = (
isVisible: true,
},
}),
messageParticipantRecordPageFieldsOther:
messageParticipantRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'messageParticipant',
context: {
viewName: 'messageParticipantRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -19,27 +19,16 @@ export const computeStandardNoteViewFieldGroups = (
isVisible: true,
},
}),
noteRecordPageFieldsAdditional: createStandardViewFieldGroupFlatMetadata({
noteRecordPageFieldsSystem: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldGroupName: 'additional',
name: 'Additional',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
}),
noteRecordPageFieldsOther: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
position: 2,
isVisible: true,
},
}),
};
};
@@ -8,40 +8,41 @@ export const computeStandardOpportunityViewFieldGroups = (
args: Omit<CreateStandardViewFieldGroupArgs<'opportunity'>, 'context'>,
): Record<string, FlatViewFieldGroup> => {
return {
opportunityRecordPageFieldsGeneral:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldGroupName: 'general',
name: 'General',
position: 0,
isVisible: true,
},
}),
opportunityRecordPageFieldsAdditional:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldGroupName: 'additional',
name: 'Additional',
position: 1,
isVisible: true,
},
}),
opportunityRecordPageFieldsOther: createStandardViewFieldGroupFlatMetadata({
opportunityRecordPageFieldsDeal: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
position: 2,
viewFieldGroupName: 'deal',
name: 'Deal',
position: 0,
isVisible: true,
},
}),
opportunityRecordPageFieldsRelations:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldGroupName: 'relations',
name: 'Relations',
position: 1,
isVisible: true,
},
}),
opportunityRecordPageFieldsSystem: createStandardViewFieldGroupFlatMetadata(
{
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldGroupName: 'system',
name: 'System',
position: 2,
isVisible: true,
},
},
),
};
};
@@ -19,27 +19,38 @@ export const computeStandardPersonViewFieldGroups = (
isVisible: true,
},
}),
personRecordPageFieldsAdditional: createStandardViewFieldGroupFlatMetadata({
personRecordPageFieldsWork: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldGroupName: 'additional',
name: 'Additional',
viewFieldGroupName: 'work',
name: 'Work',
position: 1,
isVisible: true,
},
}),
personRecordPageFieldsOther: createStandardViewFieldGroupFlatMetadata({
personRecordPageFieldsSocial: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'social',
name: 'Social',
position: 2,
isVisible: true,
},
}),
personRecordPageFieldsSystem: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldGroupName: 'system',
name: 'System',
position: 3,
isVisible: true,
},
}),
};
};
@@ -19,27 +19,16 @@ export const computeStandardTaskViewFieldGroups = (
isVisible: true,
},
}),
taskRecordPageFieldsAdditional: createStandardViewFieldGroupFlatMetadata({
taskRecordPageFieldsSystem: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldGroupName: 'additional',
name: 'Additional',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
}),
taskRecordPageFieldsOther: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
position: 2,
isVisible: true,
},
}),
};
};
@@ -23,14 +23,14 @@ export const computeStandardWorkflowAutomatedTriggerViewFieldGroups = (
isVisible: true,
},
}),
workflowAutomatedTriggerRecordPageFieldsOther:
workflowAutomatedTriggerRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'workflowAutomatedTrigger',
context: {
viewName: 'workflowAutomatedTriggerRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
@@ -20,28 +20,18 @@ export const computeStandardWorkflowRunViewFieldGroups = (
isVisible: true,
},
}),
workflowRunRecordPageFieldsAdditional:
createStandardViewFieldGroupFlatMetadata({
workflowRunRecordPageFieldsSystem: createStandardViewFieldGroupFlatMetadata(
{
...args,
objectName: 'workflowRun',
context: {
viewName: 'workflowRunRecordPageFields',
viewFieldGroupName: 'additional',
name: 'Additional',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
}),
workflowRunRecordPageFieldsOther: createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'workflowRun',
context: {
viewName: 'workflowRunRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
position: 2,
isVisible: true,
},
}),
),
};
};
@@ -20,29 +20,17 @@ export const computeStandardWorkflowVersionViewFieldGroups = (
isVisible: true,
},
}),
workflowVersionRecordPageFieldsAdditional:
workflowVersionRecordPageFieldsSystem:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'workflowVersion',
context: {
viewName: 'workflowVersionRecordPageFields',
viewFieldGroupName: 'additional',
name: 'Additional',
viewFieldGroupName: 'system',
name: 'System',
position: 1,
isVisible: true,
},
}),
workflowVersionRecordPageFieldsOther:
createStandardViewFieldGroupFlatMetadata({
...args,
objectName: 'workflowVersion',
context: {
viewName: 'workflowVersionRecordPageFields',
viewFieldGroupName: 'other',
name: 'Other',
position: 2,
isVisible: true,
},
}),
};
};
@@ -69,7 +69,7 @@ export const computeStandardBlocklistViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
blocklistRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
@@ -82,7 +82,7 @@ export const computeStandardBlocklistViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -117,7 +117,7 @@ export const computeStandardCalendarChannelEventAssociationViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
calendarChannelEventAssociationRecordPageFieldsCreatedBy:
@@ -131,7 +131,7 @@ export const computeStandardCalendarChannelEventAssociationViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -148,7 +148,7 @@ export const computeStandardCalendarChannelViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
calendarChannelRecordPageFieldsCreatedBy:
@@ -162,7 +162,7 @@ export const computeStandardCalendarChannelViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -222,7 +222,7 @@ export const computeStandardCalendarEventParticipantViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
calendarEventParticipantRecordPageFieldsCreatedBy:
@@ -236,7 +236,7 @@ export const computeStandardCalendarEventParticipantViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -139,138 +139,6 @@ export const computeStandardCompanyViewFields = (
viewFieldGroupName: 'general',
},
}),
companyRecordPageFieldsAnnualRecurringRevenue:
createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'annualRecurringRevenue',
fieldName: 'annualRecurringRevenue',
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
},
}),
companyRecordPageFieldsIdealCustomerProfile:
createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'idealCustomerProfile',
fieldName: 'idealCustomerProfile',
position: 0,
isVisible: false,
size: 150,
viewFieldGroupName: 'additional',
},
}),
companyRecordPageFieldsEmployees: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'employees',
fieldName: 'employees',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
companyRecordPageFieldsLinkedinLink: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'linkedinLink',
fieldName: 'linkedinLink',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
companyRecordPageFieldsXLink: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'xLink',
fieldName: 'xLink',
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
companyRecordPageFieldsAddress: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'address',
fieldName: 'address',
position: 3,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
companyRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'createdAt',
fieldName: 'createdAt',
position: 4,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
companyRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'createdBy',
fieldName: 'createdBy',
position: 5,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
companyRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'updatedAt',
fieldName: 'updatedAt',
position: 6,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
},
}),
companyRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'updatedBy',
fieldName: 'updatedBy',
position: 7,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
},
}),
companyRecordPageFieldsPeople: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
@@ -278,7 +146,7 @@ export const computeStandardCompanyViewFields = (
viewName: 'companyRecordPageFields',
viewFieldName: 'people',
fieldName: 'people',
position: 4,
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -291,7 +159,7 @@ export const computeStandardCompanyViewFields = (
viewName: 'companyRecordPageFields',
viewFieldName: 'taskTargets',
fieldName: 'taskTargets',
position: 5,
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -304,7 +172,7 @@ export const computeStandardCompanyViewFields = (
viewName: 'companyRecordPageFields',
viewFieldName: 'noteTargets',
fieldName: 'noteTargets',
position: 6,
position: 4,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -317,7 +185,7 @@ export const computeStandardCompanyViewFields = (
viewName: 'companyRecordPageFields',
viewFieldName: 'opportunities',
fieldName: 'opportunities',
position: 7,
position: 5,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -330,7 +198,7 @@ export const computeStandardCompanyViewFields = (
viewName: 'companyRecordPageFields',
viewFieldName: 'favorites',
fieldName: 'favorites',
position: 8,
position: 6,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -343,7 +211,7 @@ export const computeStandardCompanyViewFields = (
viewName: 'companyRecordPageFields',
viewFieldName: 'attachments',
fieldName: 'attachments',
position: 9,
position: 7,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -357,11 +225,146 @@ export const computeStandardCompanyViewFields = (
viewName: 'companyRecordPageFields',
viewFieldName: 'timelineActivities',
fieldName: 'timelineActivities',
position: 10,
position: 8,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
}),
// Business group
companyRecordPageFieldsAnnualRecurringRevenue:
createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'annualRecurringRevenue',
fieldName: 'annualRecurringRevenue',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'business',
},
}),
companyRecordPageFieldsEmployees: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'employees',
fieldName: 'employees',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'business',
},
}),
companyRecordPageFieldsIdealCustomerProfile:
createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'idealCustomerProfile',
fieldName: 'idealCustomerProfile',
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'business',
},
}),
// Contact group
companyRecordPageFieldsAddress: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'address',
fieldName: 'address',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'contact',
},
}),
companyRecordPageFieldsLinkedinLink: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'linkedinLink',
fieldName: 'linkedinLink',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'contact',
},
}),
companyRecordPageFieldsXLink: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'xLink',
fieldName: 'xLink',
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'contact',
},
}),
// System group
companyRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'createdAt',
fieldName: 'createdAt',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'system',
},
}),
companyRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'createdBy',
fieldName: 'createdBy',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'system',
},
}),
companyRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'updatedAt',
fieldName: 'updatedAt',
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'system',
},
}),
companyRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'company',
context: {
viewName: 'companyRecordPageFields',
viewFieldName: 'updatedBy',
fieldName: 'updatedBy',
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'system',
},
}),
};
};
@@ -122,7 +122,7 @@ export const computeStandardConnectedAccountViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
connectedAccountRecordPageFieldsCreatedBy:
@@ -136,7 +136,7 @@ export const computeStandardConnectedAccountViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -44,7 +44,7 @@ export const computeStandardFavoriteFolderViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
favoriteFolderRecordPageFieldsCreatedBy:
@@ -58,7 +58,7 @@ export const computeStandardFavoriteFolderViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -234,7 +234,7 @@ export const computeStandardFavoriteViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
favoriteRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
@@ -247,7 +247,7 @@ export const computeStandardFavoriteViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -94,7 +94,7 @@ export const computeStandardMessageChannelMessageAssociationMessageFolderViewFie
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
messageChannelMessageAssociationMessageFolderRecordPageFieldsCreatedBy:
@@ -109,7 +109,7 @@ export const computeStandardMessageChannelMessageAssociationMessageFolderViewFie
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -144,7 +144,7 @@ export const computeStandardMessageChannelMessageAssociationViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
messageChannelMessageAssociationRecordPageFieldsCreatedBy:
@@ -158,7 +158,7 @@ export const computeStandardMessageChannelMessageAssociationViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -173,7 +173,7 @@ export const computeStandardMessageChannelViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
messageChannelRecordPageFieldsCreatedBy:
@@ -187,7 +187,7 @@ export const computeStandardMessageChannelViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -121,7 +121,7 @@ export const computeStandardMessageFolderViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
},
),
@@ -136,7 +136,7 @@ export const computeStandardMessageFolderViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
},
),
@@ -175,7 +175,7 @@ export const computeStandardMessageParticipantViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
messageParticipantRecordPageFieldsCreatedBy:
@@ -189,7 +189,7 @@ export const computeStandardMessageParticipantViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -70,6 +70,20 @@ export const computeStandardNoteViewFields = (
}),
// noteRecordPageFields view fields
// General group
noteRecordPageFieldsBodyV2: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'bodyV2',
fieldName: 'bodyV2',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
},
}),
noteRecordPageFieldsNoteTargets: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
@@ -83,71 +97,6 @@ export const computeStandardNoteViewFields = (
viewFieldGroupName: 'general',
},
}),
noteRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'createdAt',
fieldName: 'createdAt',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
noteRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'createdBy',
fieldName: 'createdBy',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
noteRecordPageFieldsBodyV2: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'bodyV2',
fieldName: 'bodyV2',
position: 0,
isVisible: false,
size: 150,
viewFieldGroupName: 'additional',
},
}),
noteRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'updatedAt',
fieldName: 'updatedAt',
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
},
}),
noteRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'updatedBy',
fieldName: 'updatedBy',
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
},
}),
noteRecordPageFieldsAttachments: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
@@ -189,5 +138,58 @@ export const computeStandardNoteViewFields = (
viewFieldGroupName: 'general',
},
}),
// System group
noteRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'createdAt',
fieldName: 'createdAt',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'system',
},
}),
noteRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'createdBy',
fieldName: 'createdBy',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'system',
},
}),
noteRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'updatedAt',
fieldName: 'updatedAt',
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'system',
},
}),
noteRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'note',
context: {
viewName: 'noteRecordPageFields',
viewFieldName: 'updatedBy',
fieldName: 'updatedBy',
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'system',
},
}),
};
};
@@ -161,6 +161,7 @@ export const computeStandardOpportunityViewFields = (
}),
// opportunityRecordPageFields view fields
// Deal group
opportunityRecordPageFieldsAmount: createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
@@ -171,20 +172,7 @@ export const computeStandardOpportunityViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
},
}),
opportunityRecordPageFieldsCloseDate: createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'closeDate',
fieldName: 'closeDate',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
viewFieldGroupName: 'deal',
},
}),
opportunityRecordPageFieldsStage: createStandardViewFieldFlatMetadata({
@@ -194,12 +182,98 @@ export const computeStandardOpportunityViewFields = (
viewName: 'opportunityRecordPageFields',
viewFieldName: 'stage',
fieldName: 'stage',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'deal',
},
}),
opportunityRecordPageFieldsCloseDate: createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'closeDate',
fieldName: 'closeDate',
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
viewFieldGroupName: 'deal',
},
}),
opportunityRecordPageFieldsFavorites: createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'favorites',
fieldName: 'favorites',
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'deal',
},
}),
opportunityRecordPageFieldsTaskTargets: createStandardViewFieldFlatMetadata(
{
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'taskTargets',
fieldName: 'taskTargets',
position: 4,
isVisible: false,
size: 150,
viewFieldGroupName: 'deal',
},
},
),
opportunityRecordPageFieldsNoteTargets: createStandardViewFieldFlatMetadata(
{
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'noteTargets',
fieldName: 'noteTargets',
position: 5,
isVisible: false,
size: 150,
viewFieldGroupName: 'deal',
},
},
),
opportunityRecordPageFieldsAttachments: createStandardViewFieldFlatMetadata(
{
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'attachments',
fieldName: 'attachments',
position: 6,
isVisible: false,
size: 150,
viewFieldGroupName: 'deal',
},
},
),
opportunityRecordPageFieldsTimelineActivities:
createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'timelineActivities',
fieldName: 'timelineActivities',
position: 7,
isVisible: false,
size: 150,
viewFieldGroupName: 'deal',
},
}),
// Relations group
opportunityRecordPageFieldsCompany: createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
@@ -207,10 +281,10 @@ export const computeStandardOpportunityViewFields = (
viewName: 'opportunityRecordPageFields',
viewFieldName: 'company',
fieldName: 'company',
position: 3,
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
viewFieldGroupName: 'relations',
},
}),
opportunityRecordPageFieldsPointOfContact:
@@ -221,10 +295,10 @@ export const computeStandardOpportunityViewFields = (
viewName: 'opportunityRecordPageFields',
viewFieldName: 'pointOfContact',
fieldName: 'pointOfContact',
position: 0,
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'additional',
viewFieldGroupName: 'relations',
},
}),
opportunityRecordPageFieldsOwner: createStandardViewFieldFlatMetadata({
@@ -234,12 +308,13 @@ export const computeStandardOpportunityViewFields = (
viewName: 'opportunityRecordPageFields',
viewFieldName: 'owner',
fieldName: 'owner',
position: 1,
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'additional',
viewFieldGroupName: 'relations',
},
}),
// System group
opportunityRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
@@ -250,7 +325,7 @@ export const computeStandardOpportunityViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
opportunityRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
@@ -263,7 +338,7 @@ export const computeStandardOpportunityViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
opportunityRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
@@ -276,7 +351,7 @@ export const computeStandardOpportunityViewFields = (
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
opportunityRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
@@ -289,80 +364,8 @@ export const computeStandardOpportunityViewFields = (
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
opportunityRecordPageFieldsFavorites: createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'favorites',
fieldName: 'favorites',
position: 5,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
}),
opportunityRecordPageFieldsTaskTargets: createStandardViewFieldFlatMetadata(
{
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'taskTargets',
fieldName: 'taskTargets',
position: 6,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
},
),
opportunityRecordPageFieldsNoteTargets: createStandardViewFieldFlatMetadata(
{
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'noteTargets',
fieldName: 'noteTargets',
position: 7,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
},
),
opportunityRecordPageFieldsAttachments: createStandardViewFieldFlatMetadata(
{
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'attachments',
fieldName: 'attachments',
position: 8,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
},
),
opportunityRecordPageFieldsTimelineActivities:
createStandardViewFieldFlatMetadata({
...args,
objectName: 'opportunity',
context: {
viewName: 'opportunityRecordPageFields',
viewFieldName: 'timelineActivities',
fieldName: 'timelineActivities',
position: 9,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
}),
};
};
@@ -136,6 +136,7 @@ export const computeStandardPersonViewFields = (
}),
// personRecordPageFields view fields
// General group
personRecordPageFieldsEmails: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
@@ -162,58 +163,6 @@ export const computeStandardPersonViewFields = (
viewFieldGroupName: 'general',
},
}),
personRecordPageFieldsCompany: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'company',
fieldName: 'company',
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
},
}),
personRecordPageFieldsJobTitle: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'jobTitle',
fieldName: 'jobTitle',
position: 3,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
},
}),
personRecordPageFieldsLinkedinLink: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'linkedinLink',
fieldName: 'linkedinLink',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'additional',
},
}),
personRecordPageFieldsXLink: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'xLink',
fieldName: 'xLink',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'additional',
},
}),
personRecordPageFieldsCity: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
@@ -221,88 +170,10 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'city',
fieldName: 'city',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
personRecordPageFieldsAvatarUrl: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'avatarUrl',
fieldName: 'avatarUrl',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
personRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'createdAt',
fieldName: 'createdAt',
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
personRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'createdBy',
fieldName: 'createdBy',
position: 3,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
personRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'updatedAt',
fieldName: 'updatedAt',
position: 4,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
},
}),
personRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'updatedBy',
fieldName: 'updatedBy',
position: 5,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
},
}),
personRecordPageFieldsAvatarFile: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'avatarFile',
fieldName: 'avatarFile',
position: 0,
isVisible: false,
size: 150,
viewFieldGroupName: 'additional',
viewFieldGroupName: 'general',
},
}),
personRecordPageFieldsPointOfContactForOpportunities:
@@ -313,7 +184,7 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'pointOfContactForOpportunities',
fieldName: 'pointOfContactForOpportunities',
position: 5,
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -326,7 +197,7 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'taskTargets',
fieldName: 'taskTargets',
position: 6,
position: 4,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -339,7 +210,7 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'noteTargets',
fieldName: 'noteTargets',
position: 7,
position: 5,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -352,7 +223,7 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'favorites',
fieldName: 'favorites',
position: 8,
position: 6,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -365,7 +236,7 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'attachments',
fieldName: 'attachments',
position: 9,
position: 7,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -379,7 +250,7 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'messageParticipants',
fieldName: 'messageParticipants',
position: 10,
position: 8,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -393,7 +264,7 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'calendarEventParticipants',
fieldName: 'calendarEventParticipants',
position: 11,
position: 9,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
@@ -407,11 +278,144 @@ export const computeStandardPersonViewFields = (
viewName: 'personRecordPageFields',
viewFieldName: 'timelineActivities',
fieldName: 'timelineActivities',
position: 12,
position: 10,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
}),
personRecordPageFieldsAvatarFile: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'avatarFile',
fieldName: 'avatarFile',
position: 11,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
}),
personRecordPageFieldsAvatarUrl: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'avatarUrl',
fieldName: 'avatarUrl',
position: 12,
isVisible: false,
size: 150,
viewFieldGroupName: 'general',
},
}),
// Work group
personRecordPageFieldsCompany: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'company',
fieldName: 'company',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'work',
},
}),
personRecordPageFieldsJobTitle: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'jobTitle',
fieldName: 'jobTitle',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'work',
},
}),
// Social group
personRecordPageFieldsLinkedinLink: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'linkedinLink',
fieldName: 'linkedinLink',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'social',
},
}),
personRecordPageFieldsXLink: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'xLink',
fieldName: 'xLink',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'social',
},
}),
// System group
personRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'createdAt',
fieldName: 'createdAt',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'system',
},
}),
personRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'createdBy',
fieldName: 'createdBy',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'system',
},
}),
personRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'updatedAt',
fieldName: 'updatedAt',
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'system',
},
}),
personRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'person',
context: {
viewName: 'personRecordPageFields',
viewFieldName: 'updatedBy',
fieldName: 'updatedBy',
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'system',
},
}),
};
};
@@ -255,6 +255,7 @@ export const computeStandardTaskViewFields = (
}),
// taskRecordPageFields view fields
// General group
taskRecordPageFieldsDueAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
@@ -262,7 +263,7 @@ export const computeStandardTaskViewFields = (
viewName: 'taskRecordPageFields',
viewFieldName: 'dueAt',
fieldName: 'dueAt',
position: 1,
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
@@ -275,7 +276,7 @@ export const computeStandardTaskViewFields = (
viewName: 'taskRecordPageFields',
viewFieldName: 'status',
fieldName: 'status',
position: 2,
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
@@ -288,6 +289,19 @@ export const computeStandardTaskViewFields = (
viewName: 'taskRecordPageFields',
viewFieldName: 'assignee',
fieldName: 'assignee',
position: 2,
isVisible: true,
size: 150,
viewFieldGroupName: 'general',
},
}),
taskRecordPageFieldsBodyV2: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'bodyV2',
fieldName: 'bodyV2',
position: 3,
isVisible: true,
size: 150,
@@ -307,71 +321,6 @@ export const computeStandardTaskViewFields = (
viewFieldGroupName: 'general',
},
}),
taskRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'createdAt',
fieldName: 'createdAt',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
taskRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'createdBy',
fieldName: 'createdBy',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
},
}),
taskRecordPageFieldsBodyV2: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'bodyV2',
fieldName: 'bodyV2',
position: 0,
isVisible: false,
size: 150,
viewFieldGroupName: 'additional',
},
}),
taskRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'updatedAt',
fieldName: 'updatedAt',
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
},
}),
taskRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'updatedBy',
fieldName: 'updatedBy',
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
},
}),
taskRecordPageFieldsAttachments: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
@@ -413,5 +362,58 @@ export const computeStandardTaskViewFields = (
viewFieldGroupName: 'general',
},
}),
// System group
taskRecordPageFieldsCreatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'createdAt',
fieldName: 'createdAt',
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'system',
},
}),
taskRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'createdBy',
fieldName: 'createdBy',
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'system',
},
}),
taskRecordPageFieldsUpdatedAt: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'updatedAt',
fieldName: 'updatedAt',
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'system',
},
}),
taskRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
...args,
objectName: 'task',
context: {
viewName: 'taskRecordPageFields',
viewFieldName: 'updatedBy',
fieldName: 'updatedBy',
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'system',
},
}),
};
};
@@ -87,7 +87,7 @@ export const computeStandardWorkflowAutomatedTriggerViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowAutomatedTriggerRecordPageFieldsCreatedBy:
@@ -101,7 +101,7 @@ export const computeStandardWorkflowAutomatedTriggerViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
};
@@ -122,7 +122,7 @@ export const computeStandardWorkflowRunViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowRunRecordPageFieldsCreatedBy: createStandardViewFieldFlatMetadata({
@@ -135,7 +135,7 @@ export const computeStandardWorkflowRunViewFields = (
position: 1,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowRunRecordPageFieldsEnqueuedAt: createStandardViewFieldFlatMetadata({
@@ -145,10 +145,10 @@ export const computeStandardWorkflowRunViewFields = (
viewName: 'workflowRunRecordPageFields',
viewFieldName: 'enqueuedAt',
fieldName: 'enqueuedAt',
position: 0,
position: 9,
isVisible: false,
size: 150,
viewFieldGroupName: 'additional',
viewFieldGroupName: 'general',
},
}),
workflowRunRecordPageFieldsState: createStandardViewFieldFlatMetadata({
@@ -174,7 +174,7 @@ export const computeStandardWorkflowRunViewFields = (
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowRunRecordPageFieldsUpdatedBy: createStandardViewFieldFlatMetadata({
@@ -187,7 +187,7 @@ export const computeStandardWorkflowRunViewFields = (
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowRunRecordPageFieldsFavorites: createStandardViewFieldFlatMetadata({
@@ -123,7 +123,7 @@ export const computeStandardWorkflowVersionViewFields = (
position: 0,
isVisible: true,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowVersionRecordPageFieldsSteps: createStandardViewFieldFlatMetadata({
@@ -133,10 +133,10 @@ export const computeStandardWorkflowVersionViewFields = (
viewName: 'workflowVersionRecordPageFields',
viewFieldName: 'steps',
fieldName: 'steps',
position: 0,
position: 7,
isVisible: false,
size: 150,
viewFieldGroupName: 'additional',
viewFieldGroupName: 'general',
},
}),
workflowVersionRecordPageFieldsCreatedBy:
@@ -150,7 +150,7 @@ export const computeStandardWorkflowVersionViewFields = (
position: 1,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowVersionRecordPageFieldsUpdatedAt:
@@ -164,7 +164,7 @@ export const computeStandardWorkflowVersionViewFields = (
position: 2,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowVersionRecordPageFieldsUpdatedBy:
@@ -178,7 +178,7 @@ export const computeStandardWorkflowVersionViewFields = (
position: 3,
isVisible: false,
size: 150,
viewFieldGroupName: 'other',
viewFieldGroupName: 'system',
},
}),
workflowVersionRecordPageFieldsRuns: createStandardViewFieldFlatMetadata({
@@ -34,6 +34,7 @@ export const ALL_JSONB_PROPERTIES_WITH_SERIALIZED_RELATION_BY_METADATA_NAME = {
pageLayoutTab: {},
pageLayoutWidget: {
configuration: 'configuration',
overrides: 'overrides',
},
commandMenuItem: {},
navigationMenuItem: {},
@@ -1,5 +1,6 @@
import { Injectable } from '@nestjs/common';
import { isDefined } from 'twenty-shared/utils';
import { v4 } from 'uuid';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
@@ -11,6 +12,7 @@ import {
UniversalCreatePageLayoutWidgetAction,
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type';
import { fromUniversalConfigurationToFlatPageLayoutWidgetConfiguration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/utils/from-universal-configuration-to-flat-page-layout-widget-configuration.util';
import { fromUniversalOverridesToPageLayoutWidgetOverrides } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/utils/from-universal-overrides-to-page-layout-widget-overrides.util';
import {
WorkspaceMigrationActionRunnerArgs,
WorkspaceMigrationActionRunnerContext,
@@ -47,6 +49,13 @@ export class CreatePageLayoutWidgetActionHandlerService extends WorkspaceMigrati
flatViewFieldGroupMaps: allFlatEntityMaps.flatViewFieldGroupMaps,
});
const overrides = isDefined(action.flatEntity.universalOverrides)
? fromUniversalOverridesToPageLayoutWidgetOverrides({
universalOverrides: action.flatEntity.universalOverrides,
flatPageLayoutTabMaps: allFlatEntityMaps.flatPageLayoutTabMaps,
})
: null;
const emptyUniversalForeignKeyAggregators =
getUniversalFlatEntityEmptyForeignKeyAggregators({
metadataName: 'pageLayoutWidget',
@@ -57,6 +66,7 @@ export class CreatePageLayoutWidgetActionHandlerService extends WorkspaceMigrati
flatEntity: {
...action.flatEntity,
configuration,
overrides,
pageLayoutTabId,
objectMetadataId,
applicationId: flatApplication.id,
@@ -10,6 +10,7 @@ import {
UniversalUpdatePageLayoutWidgetAction,
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type';
import { fromUniversalConfigurationToFlatPageLayoutWidgetConfiguration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/utils/from-universal-configuration-to-flat-page-layout-widget-configuration.util';
import { fromUniversalOverridesToPageLayoutWidgetOverrides } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/utils/from-universal-overrides-to-page-layout-widget-overrides.util';
import {
WorkspaceMigrationActionRunnerArgs,
WorkspaceMigrationActionRunnerContext,
@@ -34,14 +35,17 @@ export class UpdatePageLayoutWidgetActionHandlerService extends WorkspaceMigrati
universalIdentifier: action.universalIdentifier,
});
const { universalConfiguration, ...updateWithResolvedForeignKeys } =
resolveUniversalUpdateRelationIdentifiersToIds({
metadataName: 'pageLayoutWidget',
universalUpdate: action.update,
allFlatEntityMaps,
});
const {
universalConfiguration,
universalOverrides,
...updateWithResolvedForeignKeys
} = resolveUniversalUpdateRelationIdentifiersToIds({
metadataName: 'pageLayoutWidget',
universalUpdate: action.update,
allFlatEntityMaps,
});
const update =
const updateWithConfiguration =
universalConfiguration === undefined
? updateWithResolvedForeignKeys
: {
@@ -58,6 +62,19 @@ export class UpdatePageLayoutWidgetActionHandlerService extends WorkspaceMigrati
}),
};
const update =
universalOverrides === undefined
? updateWithConfiguration
: universalOverrides === null
? { ...updateWithConfiguration, overrides: null }
: {
...updateWithConfiguration,
overrides: fromUniversalOverridesToPageLayoutWidgetOverrides({
universalOverrides,
flatPageLayoutTabMaps: allFlatEntityMaps.flatPageLayoutTabMaps,
}),
};
return {
type: 'update',
metadataName: 'pageLayoutWidget',
@@ -0,0 +1,39 @@
import { type FormatRecordSerializedRelationProperties } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { type FlatPageLayoutTabMaps } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab-maps.type';
import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type';
import { type PageLayoutWidgetOverrides } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity';
type UniversalPageLayoutWidgetOverrides =
FormatRecordSerializedRelationProperties<PageLayoutWidgetOverrides>;
export const fromUniversalOverridesToPageLayoutWidgetOverrides = ({
universalOverrides,
flatPageLayoutTabMaps,
}: {
universalOverrides: UniversalPageLayoutWidgetOverrides;
flatPageLayoutTabMaps: FlatPageLayoutTabMaps;
}): PageLayoutWidgetOverrides => {
const { pageLayoutTabUniversalIdentifier, ...scalarOverrides } =
universalOverrides;
if (!isDefined(pageLayoutTabUniversalIdentifier)) {
return {
...scalarOverrides,
};
}
const flatPageLayoutTab =
findFlatEntityByUniversalIdentifierOrThrow<FlatPageLayoutTab>({
flatEntityMaps: flatPageLayoutTabMaps,
universalIdentifier: pageLayoutTabUniversalIdentifier,
});
return {
...scalarOverrides,
pageLayoutTabId:
flatPageLayoutTab.id as PageLayoutWidgetOverrides['pageLayoutTabId'],
};
};
@@ -183,7 +183,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '94009e34-52fb-4534-89ce-6c6d0a774056',
},
other: {
system: {
universalIdentifier: '35dace44-6e63-4cdb-b761-a92bcf126a7e',
},
},
@@ -273,7 +273,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '9c27f771-9f85-492f-b1f1-9bc7a175f6f3',
},
other: {
system: {
universalIdentifier: 'c7b18e05-dd60-4ee4-911a-290790e8c425',
},
},
@@ -394,7 +394,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: 'e015afb4-bb6b-44ab-8077-01196c70bd1b',
},
other: {
system: {
universalIdentifier: 'a7e61a73-68b3-46a2-8624-54a4f0a81710',
},
},
@@ -517,7 +517,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '3d842777-436e-467d-90ae-9e1fa0aa7e9c',
},
other: {
system: {
universalIdentifier: '098836d8-15c1-44c1-a58e-2ff7fd6a05f9',
},
},
@@ -761,12 +761,15 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '20202020-a001-4a01-8a01-c0aba11c1101',
},
additional: {
business: {
universalIdentifier: '20202020-a001-4a01-8a01-c0aba11c1102',
},
other: {
contact: {
universalIdentifier: '20202020-a001-4a01-8a01-c0aba11c1103',
},
system: {
universalIdentifier: '20202020-a001-4a01-8a01-c0aba11c1104',
},
},
viewFields: {
domainName: {
@@ -927,7 +930,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '428a9949-71f4-4ebf-9160-1da43f1113ff',
},
other: {
system: {
universalIdentifier: 'ce9f7f72-583e-4415-a82f-e1f4b2cc8e2f',
},
},
@@ -1135,7 +1138,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: 'd08267ae-eb74-4ed5-884e-4015d16d962d',
},
other: {
system: {
universalIdentifier: 'bbbca990-4876-4802-bf7e-94f685bd5f52',
},
},
@@ -1223,7 +1226,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: 'c0af3a9b-38bc-4c19-a79d-910f35d6f766',
},
other: {
system: {
universalIdentifier: 'a7db50c7-826a-41ed-a252-1a07d445b025',
},
},
@@ -1325,7 +1328,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '86d7066c-ba38-4f6a-996f-77345bedd549',
},
other: {
system: {
universalIdentifier: '6044c58c-a63c-4f3f-a283-b8803553628f',
},
},
@@ -1418,7 +1421,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '4928521b-ae24-4013-a69a-1392017d57af',
},
other: {
system: {
universalIdentifier: 'b76cebb3-39b2-477a-9212-8bf1190227a4',
},
},
@@ -1555,7 +1558,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '96113215-6bf2-476c-ae69-c70274257913',
},
other: {
system: {
universalIdentifier: '2f08a624-e1a7-4f79-b5f7-1a8e92f4c07e',
},
},
@@ -1665,7 +1668,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: 'c55a9366-bb2c-4ae7-8345-115c790f56b1',
},
other: {
system: {
universalIdentifier: '51b6af5e-9f76-4fb2-811b-6193761d7702',
},
},
@@ -1777,7 +1780,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '41c18430-34c3-430f-b86b-fc3963281277',
},
other: {
system: {
universalIdentifier: 'add21830-a7c6-4cde-9eed-430afbcbf557',
},
},
@@ -2013,10 +2016,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '20202020-a005-4a05-8a05-a0be5a115101',
},
additional: {
universalIdentifier: '20202020-a005-4a05-8a05-a0be5a115102',
},
other: {
system: {
universalIdentifier: '20202020-a005-4a05-8a05-a0be5a115103',
},
},
@@ -2261,13 +2261,13 @@ export const STANDARD_OBJECTS = {
opportunityRecordPageFields: {
universalIdentifier: '20202020-a003-4a03-8a03-0aa0b1ca3001',
viewFieldGroups: {
general: {
deal: {
universalIdentifier: '20202020-a003-4a03-8a03-0aa0b1ca3101',
},
additional: {
relations: {
universalIdentifier: '20202020-a003-4a03-8a03-0aa0b1ca3102',
},
other: {
system: {
universalIdentifier: '20202020-a003-4a03-8a03-0aa0b1ca3103',
},
},
@@ -2438,12 +2438,15 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '20202020-a002-4a02-8a02-ae0a1ea12101',
},
additional: {
work: {
universalIdentifier: '20202020-a002-4a02-8a02-ae0a1ea12102',
},
other: {
social: {
universalIdentifier: '20202020-a002-4a02-8a02-ae0a1ea12103',
},
system: {
universalIdentifier: '20202020-a002-4a02-8a02-ae0a1ea12104',
},
},
viewFields: {
emails: {
@@ -2674,10 +2677,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '20202020-a006-4a06-8a06-ba5ca11a6101',
},
additional: {
universalIdentifier: '20202020-a006-4a06-8a06-ba5ca11a6102',
},
other: {
system: {
universalIdentifier: '20202020-a006-4a06-8a06-ba5ca11a6103',
},
},
@@ -3092,7 +3092,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: 'c5261eae-f2fe-416e-8ef9-eda5d377f8ca',
},
other: {
system: {
universalIdentifier: 'e6da0410-7f63-41b7-b977-421fc37d67f5',
},
},
@@ -3243,10 +3243,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '20202020-a011-4a11-8a11-a0bcf10abcf2',
},
additional: {
universalIdentifier: '20202020-a011-4a11-8a11-a0bcf10abcf3',
},
other: {
system: {
universalIdentifier: '20202020-a011-4a11-8a11-a0bcf10abcf4',
},
},
@@ -3367,10 +3364,7 @@ export const STANDARD_OBJECTS = {
general: {
universalIdentifier: '20202020-a010-4a10-8a10-a0bcf10aaef2',
},
additional: {
universalIdentifier: '20202020-a010-4a10-8a10-a0bcf10aaef3',
},
other: {
system: {
universalIdentifier: '20202020-a010-4a10-8a10-a0bcf10aaef4',
},
},