From 21301b97020fce4f24c378193a67e86045f4a7da Mon Sep 17 00:00:00 2001 From: Mohamed Marrouchi Date: Tue, 4 Feb 2025 17:57:37 +0100 Subject: [PATCH] fix: handover/handback lifecycle hook --- .../repositories/subscriber.repository.ts | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/api/src/chat/repositories/subscriber.repository.ts b/api/src/chat/repositories/subscriber.repository.ts index fa59ee70..02d0ad66 100644 --- a/api/src/chat/repositories/subscriber.repository.ts +++ b/api/src/chat/repositories/subscriber.repository.ts @@ -80,26 +80,29 @@ export class SubscriberRepository extends BaseRepository< ): Promise { const subscriberUpdates: SubscriberUpdateDto = updates?.['$set']; - const oldSubscriber = await this.findOne(criteria); + if ('assignedTo' in subscriberUpdates) { + // In case of a handover or handback, emit events + const oldSubscriber = await this.findOne(criteria); - if (!oldSubscriber) { - throw new Error('Something went wrong: subscriber does not exist'); - } + if (!oldSubscriber) { + throw new Error('Something went wrong: subscriber does not exist'); + } - if (subscriberUpdates.assignedTo !== oldSubscriber?.assignedTo) { - this.eventEmitter.emit( - 'hook:subscriber:assign', - subscriberUpdates, - oldSubscriber, - ); - - if (!(subscriberUpdates.assignedTo && oldSubscriber?.assignedTo)) { + if (subscriberUpdates.assignedTo !== oldSubscriber?.assignedTo) { this.eventEmitter.emit( - 'hook:analytics:passation', + 'hook:subscriber:assign', + subscriberUpdates, oldSubscriber, - !!subscriberUpdates?.assignedTo, ); - subscriberUpdates.assignedAt = new Date(); + + if (!(subscriberUpdates.assignedTo && oldSubscriber?.assignedTo)) { + this.eventEmitter.emit( + 'hook:analytics:passation', + oldSubscriber, + !!subscriberUpdates?.assignedTo, + ); + subscriberUpdates.assignedAt = new Date(); + } } } }