6619 modify event emitter to emit an array of events (#6625)
Closes #6619 --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -6,9 +6,10 @@ import { objectRecordChangedProperties } from 'src/engine/integrations/event-emi
|
||||
import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
|
||||
import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
|
||||
import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
|
||||
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
|
||||
import {
|
||||
CalendarCreateCompanyAndContactAfterSyncJobData,
|
||||
CalendarCreateCompanyAndContactAfterSyncJob,
|
||||
CalendarCreateCompanyAndContactAfterSyncJobData,
|
||||
} from 'src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job';
|
||||
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
|
||||
|
||||
@ -21,22 +22,28 @@ export class AutoCompaniesAndContactsCreationCalendarChannelListener {
|
||||
|
||||
@OnEvent('calendarChannel.updated')
|
||||
async handleUpdatedEvent(
|
||||
payload: ObjectRecordUpdateEvent<MessageChannelWorkspaceEntity>,
|
||||
payload: WorkspaceEventBatch<
|
||||
ObjectRecordUpdateEvent<MessageChannelWorkspaceEntity>
|
||||
>,
|
||||
) {
|
||||
if (
|
||||
objectRecordChangedProperties(
|
||||
payload.properties.before,
|
||||
payload.properties.after,
|
||||
).includes('isContactAutoCreationEnabled') &&
|
||||
payload.properties.after.isContactAutoCreationEnabled
|
||||
) {
|
||||
await this.messageQueueService.add<CalendarCreateCompanyAndContactAfterSyncJobData>(
|
||||
CalendarCreateCompanyAndContactAfterSyncJob.name,
|
||||
{
|
||||
workspaceId: payload.workspaceId,
|
||||
calendarChannelId: payload.recordId,
|
||||
},
|
||||
);
|
||||
}
|
||||
await Promise.all(
|
||||
payload.events.map((eventPayload) => {
|
||||
if (
|
||||
objectRecordChangedProperties(
|
||||
eventPayload.properties.before,
|
||||
eventPayload.properties.after,
|
||||
).includes('isContactAutoCreationEnabled') &&
|
||||
eventPayload.properties.after.isContactAutoCreationEnabled
|
||||
) {
|
||||
return this.messageQueueService.add<CalendarCreateCompanyAndContactAfterSyncJobData>(
|
||||
CalendarCreateCompanyAndContactAfterSyncJob.name,
|
||||
{
|
||||
workspaceId: payload.workspaceId,
|
||||
calendarChannelId: eventPayload.recordId,
|
||||
},
|
||||
);
|
||||
}
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,10 +6,11 @@ import { objectRecordChangedProperties } from 'src/engine/integrations/event-emi
|
||||
import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
|
||||
import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
|
||||
import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
|
||||
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
|
||||
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
|
||||
import {
|
||||
MessagingCreateCompanyAndContactAfterSyncJobData,
|
||||
MessagingCreateCompanyAndContactAfterSyncJob,
|
||||
MessagingCreateCompanyAndContactAfterSyncJobData,
|
||||
} from 'src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job';
|
||||
|
||||
@Injectable()
|
||||
@ -21,22 +22,28 @@ export class AutoCompaniesAndContactsCreationMessageChannelListener {
|
||||
|
||||
@OnEvent('messageChannel.updated')
|
||||
async handleUpdatedEvent(
|
||||
payload: ObjectRecordUpdateEvent<MessageChannelWorkspaceEntity>,
|
||||
payload: WorkspaceEventBatch<
|
||||
ObjectRecordUpdateEvent<MessageChannelWorkspaceEntity>
|
||||
>,
|
||||
) {
|
||||
if (
|
||||
objectRecordChangedProperties(
|
||||
payload.properties.before,
|
||||
payload.properties.after,
|
||||
).includes('isContactAutoCreationEnabled') &&
|
||||
payload.properties.after.isContactAutoCreationEnabled
|
||||
) {
|
||||
await this.messageQueueService.add<MessagingCreateCompanyAndContactAfterSyncJobData>(
|
||||
MessagingCreateCompanyAndContactAfterSyncJob.name,
|
||||
{
|
||||
workspaceId: payload.workspaceId,
|
||||
messageChannelId: payload.recordId,
|
||||
},
|
||||
);
|
||||
}
|
||||
await Promise.all(
|
||||
payload.events.map((eventPayload) => {
|
||||
if (
|
||||
objectRecordChangedProperties(
|
||||
eventPayload.properties.before,
|
||||
eventPayload.properties.after,
|
||||
).includes('isContactAutoCreationEnabled') &&
|
||||
eventPayload.properties.after.isContactAutoCreationEnabled
|
||||
) {
|
||||
return this.messageQueueService.add<MessagingCreateCompanyAndContactAfterSyncJobData>(
|
||||
MessagingCreateCompanyAndContactAfterSyncJob.name,
|
||||
{
|
||||
workspaceId: payload.workspaceId,
|
||||
messageChannelId: eventPayload.recordId,
|
||||
},
|
||||
);
|
||||
}
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
|
||||
import chunk from 'lodash.chunk';
|
||||
@ -11,6 +10,7 @@ import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/com
|
||||
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
|
||||
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
|
||||
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
|
||||
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
|
||||
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
|
||||
import { CONTACTS_CREATION_BATCH_SIZE } from 'src/modules/contact-creation-manager/constants/contacts-creation-batch-size.constant';
|
||||
@ -32,7 +32,7 @@ export class CreateCompanyAndContactService {
|
||||
private readonly createCompaniesService: CreateCompanyService,
|
||||
@InjectObjectMetadataRepository(WorkspaceMemberWorkspaceEntity)
|
||||
private readonly workspaceMemberRepository: WorkspaceMemberRepository,
|
||||
private readonly eventEmitter: EventEmitter2,
|
||||
private readonly workspaceEventEmitter: WorkspaceEventEmitter,
|
||||
@InjectRepository(ObjectMetadataEntity, 'metadata')
|
||||
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
|
||||
private readonly twentyORMGlobalManager: TwentyORMGlobalManager,
|
||||
@ -191,18 +191,21 @@ export class CreateCompanyAndContactService {
|
||||
source,
|
||||
);
|
||||
|
||||
for (const createdPerson of createdPeople) {
|
||||
this.eventEmitter.emit('person.created', {
|
||||
name: 'person.created',
|
||||
workspaceId,
|
||||
// FixMe: TypeORM typing issue... id is always returned when using save
|
||||
recordId: createdPerson.id as string,
|
||||
objectMetadata,
|
||||
properties: {
|
||||
after: createdPerson,
|
||||
},
|
||||
} satisfies ObjectRecordCreateEvent<any>);
|
||||
}
|
||||
this.workspaceEventEmitter.emit(
|
||||
'person.created',
|
||||
createdPeople.map(
|
||||
(createdPerson) =>
|
||||
({
|
||||
// FixMe: TypeORM typing issue... id is always returned when using save
|
||||
recordId: createdPerson.id as string,
|
||||
objectMetadata,
|
||||
properties: {
|
||||
after: createdPerson,
|
||||
},
|
||||
}) satisfies ObjectRecordCreateEvent<any>,
|
||||
),
|
||||
workspaceId,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user