Skip to content

Commit b5e6600

Browse files
authored
Capitalize labels objectmetadata (#11609)
Capitalize labels singular and plural from objectmetadata Fixes [#664](twentyhq/core-team-issues#664)
1 parent 3ad110d commit b5e6600

File tree

3 files changed

+27
-8
lines changed

3 files changed

+27
-8
lines changed

packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ import styled from '@emotion/styled';
1111
import { useLingui } from '@lingui/react/macro';
1212
import { plural } from 'pluralize';
1313
import { Controller, useFormContext } from 'react-hook-form';
14-
import { isDefined } from 'twenty-shared/utils';
15-
import { StringKeyOf } from 'type-fest';
16-
import { computeMetadataNameFromLabel } from '~/pages/settings/data-model/utils/compute-metadata-name-from-label.utils';
14+
import { capitalize, isDefined } from 'twenty-shared/utils';
1715
import {
1816
AppTooltip,
1917
IconInfoCircle,
2018
IconRefresh,
2119
TooltipDelay,
2220
} from 'twenty-ui/display';
2321
import { Card } from 'twenty-ui/layout';
22+
import { StringKeyOf } from 'type-fest';
23+
import { computeMetadataNameFromLabel } from '~/pages/settings/data-model/utils/compute-metadata-name-from-label.utils';
2424

2525
type SettingsDataModelObjectAboutFormProps = {
2626
disableEdition?: boolean;
@@ -155,8 +155,8 @@ export const SettingsDataModelObjectAboutForm = ({
155155
placeholder={'Listing'}
156156
value={value}
157157
onChange={(value) => {
158-
onChange(value);
159-
fillLabelPlural(value);
158+
onChange(capitalize(value));
159+
fillLabelPlural(capitalize(value));
160160
if (isLabelSyncedWithName === true) {
161161
fillNameSingularFromLabelSingular(value);
162162
}
@@ -186,7 +186,7 @@ export const SettingsDataModelObjectAboutForm = ({
186186
placeholder={t`Listings`}
187187
value={value}
188188
onChange={(value) => {
189-
onChange(value);
189+
onChange(capitalize(value));
190190
if (isLabelSyncedWithName === true) {
191191
fillNamePluralFromLabelPlural(value);
192192
}

packages/twenty-server/src/engine/core-modules/billing/stripe/services/stripe-checkout.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import { Injectable, Logger } from '@nestjs/common';
44

5-
import { isDefined } from 'class-validator';
65
import Stripe from 'stripe';
6+
import { isDefined } from 'twenty-shared/utils';
77

88
import { BillingPlanKey } from 'src/engine/core-modules/billing/enums/billing-plan-key.enum';
99
import { StripeSDKService } from 'src/engine/core-modules/billing/stripe/stripe-sdk/services/stripe-sdk.service';

packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import { InjectRepository } from '@nestjs/typeorm';
44
import { i18n } from '@lingui/core';
55
import { Query, QueryOptions } from '@ptc-org/nestjs-query-core';
66
import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
7-
import { isDefined } from 'class-validator';
87
import { APP_LOCALES, SOURCE_LOCALE } from 'twenty-shared/translations';
8+
import { capitalize, isDefined } from 'twenty-shared/utils';
99
import { FindManyOptions, FindOneOptions, In, Not, Repository } from 'typeorm';
1010

1111
import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
@@ -89,6 +89,13 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
8989
objectMetadataInput.workspaceId,
9090
);
9191

92+
objectMetadataInput.labelSingular = capitalize(
93+
objectMetadataInput.labelSingular,
94+
);
95+
objectMetadataInput.labelPlural = capitalize(
96+
objectMetadataInput.labelPlural,
97+
);
98+
9299
validateObjectMetadataInputNamesOrThrow(objectMetadataInput);
93100
validateObjectMetadataInputLabelsOrThrow(objectMetadataInput);
94101

@@ -212,6 +219,18 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
212219
input: UpdateOneObjectInput,
213220
workspaceId: string,
214221
): Promise<ObjectMetadataEntity> {
222+
const { update } = input;
223+
224+
if (isDefined(update.labelSingular)) {
225+
update.labelSingular = capitalize(update.labelSingular);
226+
}
227+
228+
if (isDefined(update.labelPlural)) {
229+
update.labelPlural = capitalize(update.labelPlural);
230+
}
231+
232+
input.update = update;
233+
215234
validateObjectMetadataInputNamesOrThrow(input.update);
216235

217236
const existingObjectMetadata = await this.objectMetadataRepository.findOne({

0 commit comments

Comments
 (0)