diff --git a/packages/twenty-server/src/engine/workspace-event-emitter/workspace-event-emitter.ts b/packages/twenty-server/src/engine/workspace-event-emitter/workspace-event-emitter.ts index 3607b1d5d6..496ec9df17 100644 --- a/packages/twenty-server/src/engine/workspace-event-emitter/workspace-event-emitter.ts +++ b/packages/twenty-server/src/engine/workspace-event-emitter/workspace-event-emitter.ts @@ -1,8 +1,8 @@ import { Injectable } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; -import { ObjectLiteral } from 'typeorm'; import { isDefined } from 'twenty-shared/utils'; +import { ObjectLiteral } from 'typeorm'; import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action'; import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type'; @@ -70,37 +70,43 @@ export class WorkspaceEventEmitter { }); break; case DatabaseEventAction.UPDATED: - events = entityArray.map((after, idx) => { - if (!beforeEntities) { - throw new Error('beforeEntities is required for UPDATED action'); - } + events = entityArray + .map((after, idx) => { + if (!beforeEntities) { + throw new Error('beforeEntities is required for UPDATED action'); + } - const before = Array.isArray(beforeEntities) - ? beforeEntities?.[idx] - : beforeEntities; + const before = Array.isArray(beforeEntities) + ? beforeEntities?.[idx] + : beforeEntities; - const diff = objectRecordChangedValues( - before, - after, - objectMetadataItem, - ) as Partial>; + const diff = objectRecordChangedValues( + before, + after, + objectMetadataItem, + ) as Partial>; - const updatedFields = Object.keys(diff); + const updatedFields = Object.keys(diff); - const event = new ObjectRecordUpdateEvent(); + if (updatedFields.length === 0) { + return; + } - event.userId = authContext?.user?.id; - event.recordId = after.id; - event.objectMetadata = { ...objectMetadataItem, fields }; - event.properties = { - before, - after, - updatedFields, - diff, - }; + const event = new ObjectRecordUpdateEvent(); - return event; - }); + event.userId = authContext?.user?.id; + event.recordId = after.id; + event.objectMetadata = { ...objectMetadataItem, fields }; + event.properties = { + before, + after, + updatedFields, + diff, + }; + + return event; + }) + .filter(isDefined); break; case DatabaseEventAction.DELETED: events = entityArray.map((before) => {