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',
});
}