From 7e73017d3ff29122113b5873a1e827746eb3ed0f Mon Sep 17 00:00:00 2001 From: Nevo David Date: Wed, 7 Jan 2026 09:54:45 +0700 Subject: [PATCH] fix: priority fix for send email --- apps/backend/src/services/auth/auth.service.ts | 8 ++++++-- apps/orchestrator/src/activities/email.activity.ts | 4 ++-- apps/orchestrator/src/signals/send.email.signal.ts | 1 + apps/orchestrator/src/workflows/send.email.workflow.ts | 6 +++++- .../database/prisma/notifications/notification.service.ts | 2 +- libraries/nestjs-libraries/src/services/email.service.ts | 4 ++-- 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/backend/src/services/auth/auth.service.ts b/apps/backend/src/services/auth/auth.service.ts index 59c4d11a..d2468d0d 100644 --- a/apps/backend/src/services/auth/auth.service.ts +++ b/apps/backend/src/services/auth/auth.service.ts @@ -21,7 +21,10 @@ export class AuthService { private _emailService: EmailService ) {} async canRegister(provider: string) { - if (process.env.DISABLE_REGISTRATION !== 'true' || provider === Provider.GENERIC) { + if ( + process.env.DISABLE_REGISTRATION !== 'true' || + provider === Provider.GENERIC + ) { return true; } @@ -69,7 +72,8 @@ export class AuthService { await this._emailService.sendEmail( body.email, 'Activate your account', - `Click here to activate your account` + `Click here to activate your account`, + 'top' ); return obj; } diff --git a/apps/orchestrator/src/activities/email.activity.ts b/apps/orchestrator/src/activities/email.activity.ts index 60ee03c5..c591c8d8 100644 --- a/apps/orchestrator/src/activities/email.activity.ts +++ b/apps/orchestrator/src/activities/email.activity.ts @@ -17,8 +17,8 @@ export class EmailActivity { } @ActivityMethod() - async sendEmailAsync(to: string, subject: string, html: string, replyTo?: string) { - return await this._emailService.sendEmail(to, subject, html, replyTo); + async sendEmailAsync(to: string, subject: string, html: string, sendTo: 'top' | 'bottom', replyTo?: string) { + return await this._emailService.sendEmail(to, subject, html, sendTo, replyTo); } @ActivityMethod() diff --git a/apps/orchestrator/src/signals/send.email.signal.ts b/apps/orchestrator/src/signals/send.email.signal.ts index f1a99bbd..5158b386 100644 --- a/apps/orchestrator/src/signals/send.email.signal.ts +++ b/apps/orchestrator/src/signals/send.email.signal.ts @@ -5,5 +5,6 @@ export type SendEmail = { subject: string; html: string; replyTo?: string; + addTo: 'top' | 'bottom'; }; export const sendEmailSignal = defineSignal<[SendEmail]>('sendEmail'); diff --git a/apps/orchestrator/src/workflows/send.email.workflow.ts b/apps/orchestrator/src/workflows/send.email.workflow.ts index ac4d9342..fc103888 100644 --- a/apps/orchestrator/src/workflows/send.email.workflow.ts +++ b/apps/orchestrator/src/workflows/send.email.workflow.ts @@ -28,7 +28,11 @@ export async function sendEmailWorkflow({ // Handle incoming email signals setHandler(sendEmailSignal, (addEmail: SendEmail) => { if (addEmail.to && addEmail.subject) { - queue.push(addEmail); + if (addEmail.addTo === 'top') { + queue.unshift(addEmail); + } else { + queue.push(addEmail); + } } }); diff --git a/libraries/nestjs-libraries/src/database/prisma/notifications/notification.service.ts b/libraries/nestjs-libraries/src/database/prisma/notifications/notification.service.ts index 1deb7dae..fa5f036d 100644 --- a/libraries/nestjs-libraries/src/database/prisma/notifications/notification.service.ts +++ b/libraries/nestjs-libraries/src/database/prisma/notifications/notification.service.ts @@ -101,7 +101,7 @@ export class NotificationService { } async sendEmail(to: string, subject: string, html: string, replyTo?: string) { - await this._emailService.sendEmail(to, subject, html, replyTo); + await this._emailService.sendEmail(to, subject, html, 'bottom', replyTo); } hasEmailProvider() { diff --git a/libraries/nestjs-libraries/src/services/email.service.ts b/libraries/nestjs-libraries/src/services/email.service.ts index 474520b2..a6063135 100644 --- a/libraries/nestjs-libraries/src/services/email.service.ts +++ b/libraries/nestjs-libraries/src/services/email.service.ts @@ -33,7 +33,7 @@ export class EmailService { } } - async sendEmail(to: string, subject: string, html: string, replyTo?: string) { + async sendEmail(to: string, subject: string, html: string, sendTo: 'top' | 'bottom', replyTo?: string) { return this._temporalService.client .getRawClient() ?.workflow.signalWithStart('sendEmailWorkflow', { @@ -41,7 +41,7 @@ export class EmailService { workflowId: 'send_email', signal: 'sendEmail', args: [{ queue: [] }], - signalArgs: [{ to, subject, html, replyTo }], + signalArgs: [{ to, subject, html, replyTo, sendTo }], workflowIdConflictPolicy: 'USE_EXISTING', }); }