From 2dcfaeac73171af7fe9cda4e167880450decadf7 Mon Sep 17 00:00:00 2001 From: Weiko Date: Tue, 24 Dec 2024 15:09:04 +0100 Subject: [PATCH] Restore "Fix "Create profile" page not supporting dark mode (#8110)" & Fix string defaultValues during sync-metadata (#9220) Restoring https://github.com/twentyhq/twenty/pull/9185 Also fixing sync-metadata with test values in jsonb ## Test sync-metadata on existing workspaces should replace colorSchema in both metadata and workspaceMember tables --- .../user-workspace/user-workspace.service.ts | 8 ++++---- .../comparators/workspace-field.comparator.ts | 14 +++++++++++++- .../workspace-member.workspace-entity.ts | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts index 01b3bf11a438..19413c902ed3 100644 --- a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts +++ b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts @@ -5,16 +5,16 @@ import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm'; import { Repository } from 'typeorm'; import { TypeORMService } from 'src/database/typeorm/typeorm.service'; +import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action'; +import { USER_SIGNUP_EVENT_NAME } from 'src/engine/api/graphql/workspace-query-runner/constants/user-signup-event-name.constants'; import { UserWorkspace } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; import { User } from 'src/engine/core-modules/user/user.entity'; import { WorkspaceInvitationService } from 'src/engine/core-modules/workspace-invitation/services/workspace-invitation.service'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; +import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter'; import { assert } from 'src/utils/assert'; -import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action'; -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { USER_SIGNUP_EVENT_NAME } from 'src/engine/api/graphql/workspace-query-runner/constants/user-signup-event-name.constants'; export class UserWorkspaceService extends TypeOrmQueryService { constructor( @@ -59,7 +59,7 @@ export class UserWorkspaceService extends TypeOrmQueryService { await workspaceDataSource?.query( `INSERT INTO ${dataSourceMetadata.schema}."workspaceMember" ("nameFirstName", "nameLastName", "colorScheme", "userId", "userEmail", "avatarUrl") - VALUES ($1, $2, 'Light', $3, $4, $5)`, + VALUES ($1, $2, 'System', $3, $4, $5)`, [ user.firstName, user.lastName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts index 863a12496820..42c481c81371 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts @@ -193,7 +193,7 @@ export class WorkspaceFieldComparator { if ( (fieldPropertiesToStringify as readonly string[]).includes(property) ) { - fieldPropertiesToUpdateMap[id][property] = JSON.parse( + fieldPropertiesToUpdateMap[id][property] = this.parseJSONOrString( difference.value, ); } else { @@ -233,4 +233,16 @@ export class WorkspaceFieldComparator { return result; } + + private parseJSONOrString(value: string | null): string | object | null { + if (value === null) { + return null; + } + + try { + return JSON.parse(value); + } catch { + return value; + } + } } diff --git a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts index d17ac395a7ee..326c0ec885ef 100644 --- a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts @@ -98,7 +98,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { label: 'Color Scheme', description: 'Preferred color scheme', icon: 'IconColorSwatch', - defaultValue: "'Light'", + defaultValue: "'System'", }) colorScheme: string;