Fix eventEmitter emitting when diff is empty (#13560)
This commit is contained in:
+32
-26
@@ -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<ObjectRecordDiff<T>>;
|
||||
const diff = objectRecordChangedValues(
|
||||
before,
|
||||
after,
|
||||
objectMetadataItem,
|
||||
) as Partial<ObjectRecordDiff<T>>;
|
||||
|
||||
const updatedFields = Object.keys(diff);
|
||||
const updatedFields = Object.keys(diff);
|
||||
|
||||
const event = new ObjectRecordUpdateEvent<T>();
|
||||
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<T>();
|
||||
|
||||
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) => {
|
||||
|
||||
Reference in New Issue
Block a user