diff --git a/packages/twenty-front/src/modules/serverless-functions/components/ServerlessFunctionExecutionResult.tsx b/packages/twenty-front/src/modules/serverless-functions/components/ServerlessFunctionExecutionResult.tsx index 9add7c927c..9b7a9e804d 100644 --- a/packages/twenty-front/src/modules/serverless-functions/components/ServerlessFunctionExecutionResult.tsx +++ b/packages/twenty-front/src/modules/serverless-functions/components/ServerlessFunctionExecutionResult.tsx @@ -1,7 +1,7 @@ import { ExecutionStatus, - WorkflowExecutionResult, -} from '@/workflow/components/WorkflowExecutionResult'; + WorkflowStepExecutionResult, +} from '@/workflow/components/WorkflowStepExecutionResult'; import { ServerlessFunctionTestData } from '@/workflow/states/serverlessFunctionTestDataFamilyState'; import { ServerlessFunctionExecutionStatus } from '~/generated-metadata/graphql'; @@ -37,7 +37,7 @@ export const ServerlessFunctionExecutionResult = ({ }; return ( - { +}: WorkflowStepExecutionResultProps) => { const theme = useTheme(); const SuccessLeftNode = ( diff --git a/packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowExecutionResult.stories.tsx b/packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowStepExecutionResult.stories.tsx similarity index 92% rename from packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowExecutionResult.stories.tsx rename to packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowStepExecutionResult.stories.tsx index d5cfe1d72c..d2331e6e50 100644 --- a/packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowExecutionResult.stories.tsx +++ b/packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowStepExecutionResult.stories.tsx @@ -4,11 +4,11 @@ import { ComponentDecorator } from 'twenty-ui/testing'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; -import { WorkflowExecutionResult } from '@/workflow/components/WorkflowExecutionResult'; +import { WorkflowStepExecutionResult } from '@/workflow/components/WorkflowStepExecutionResult'; -const meta: Meta = { - title: 'Modules/Workflow/Components/ExecutionResult', - component: WorkflowExecutionResult, +const meta: Meta = { + title: 'Modules/Workflow/Components/StepExecutionResult', + component: WorkflowStepExecutionResult, decorators: [ComponentDecorator, SnackBarDecorator, I18nFrontDecorator], args: { result: JSON.stringify( @@ -29,7 +29,7 @@ const meta: Meta = { }; export default meta; -type Story = StoryObj; +type Story = StoryObj; export const Idle: Story = { args: { diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/HttpRequestExecutionResult.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/HttpRequestExecutionResult.tsx index d9064e0974..ec8d3c18b4 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/HttpRequestExecutionResult.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/HttpRequestExecutionResult.tsx @@ -1,7 +1,7 @@ import { ExecutionStatus, - WorkflowExecutionResult, -} from '@/workflow/components/WorkflowExecutionResult'; + WorkflowStepExecutionResult, +} from '@/workflow/components/WorkflowStepExecutionResult'; import type { HttpRequestTestData } from '@/workflow/workflow-steps/workflow-actions/http-request-action/types/HttpRequestTestData'; export const HttpRequestExecutionResult = ({ @@ -51,7 +51,7 @@ export const HttpRequestExecutionResult = ({ }; return ( - { - if (!isDefined(address) || address.trim().length === 0) { + if (!isNonEmptyString(address?.trim())) { return []; } let url = `https://maps.googleapis.com/maps/api/place/autocomplete/json?input=${encodeURIComponent(address)}&sessiontoken=${token}&key=${this.apiMapKey}`; - if (isDefined(country) && country !== '') { + if (isNonEmptyString(country)) { url += `&components=country:${country}`; } if (isDefined(isFieldCity) && isFieldCity === true) { diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/is-optional-or-empty-string.decorator.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/is-optional-or-empty-string.decorator.ts index 0030cac323..713574e7c7 100644 --- a/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/is-optional-or-empty-string.decorator.ts +++ b/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/is-optional-or-empty-string.decorator.ts @@ -1,7 +1,8 @@ +import { isNonEmptyString } from '@sniptt/guards'; import { ValidateIf, ValidationOptions, isDefined } from 'class-validator'; export function IsOptionalOrEmptyString(validationOptions?: ValidationOptions) { return ValidateIf((_obj, value) => { - return isDefined(value) && value !== ''; + return isDefined(value) && isNonEmptyString(value); }, validationOptions); } diff --git a/packages/twenty-server/src/modules/connected-account/email-alias-manager/drivers/microsoft/microsoft-email-alias-manager.service.ts b/packages/twenty-server/src/modules/connected-account/email-alias-manager/drivers/microsoft/microsoft-email-alias-manager.service.ts index b0a484fcd7..d8534ffa1e 100644 --- a/packages/twenty-server/src/modules/connected-account/email-alias-manager/drivers/microsoft/microsoft-email-alias-manager.service.ts +++ b/packages/twenty-server/src/modules/connected-account/email-alias-manager/drivers/microsoft/microsoft-email-alias-manager.service.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; +import { isNonEmptyString } from '@sniptt/guards'; + import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { MessageImportDriverException, @@ -47,7 +49,7 @@ export class MicrosoftEmailAliasManagerService { }) // @ts-expect-error legacy noImplicitAny .filter((address) => { - return address !== ''; + return isNonEmptyString(address); }) || []; return handleAliases; diff --git a/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts b/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts index 08df8d9239..29f359f805 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts @@ -150,10 +150,9 @@ export class CreateCompanyAndContactService { filteredContactsToCreateWithCompanyDomainNames.map((contact) => ({ handle: contact.handle, displayName: contact.displayName, - companyId: - contact.companyDomainName && contact.companyDomainName !== '' - ? companiesObject[contact.companyDomainName] - : undefined, + companyId: isNonEmptyString(contact.companyDomainName) + ? companiesObject[contact.companyDomainName] + : undefined, createdBySource: source, createdByWorkspaceMember: connectedAccount.accountOwner, createdByContext: {