Make email service initialization asynchronous
Build And Push Image / docker (push) Successful in 3m10s Details

Convert getEmailService() to async function and update all callers to use await.
Replace synchronous require() with dynamic import() for admin-config module.
Add SMTP config loading to admin configuration dialog.
This commit is contained in:
Matt 2025-08-09 15:50:54 +02:00
parent 97a0b5eea6
commit dcb7840825
6 changed files with 12 additions and 6 deletions

View File

@ -673,6 +673,12 @@ const loadConfigurations = async () => {
if (registrationResponse.success && registrationResponse.data) {
registrationForm.value = { ...registrationResponse.data };
}
// Load SMTP/Email config
const smtpResponse = await $fetch<{ success: boolean; data?: SMTPConfig }>('/api/admin/smtp-config');
if (smtpResponse.success && smtpResponse.data) {
emailForm.value = { ...smtpResponse.data };
}
} catch (error) {
console.error('Failed to load configurations:', error);
errorMessage.value = 'Failed to load current settings';

View File

@ -49,7 +49,7 @@ export default defineEventHandler(async (event) => {
// Get email service and send test email
const { getEmailService } = await import('~/server/utils/email');
const emailService = getEmailService();
const emailService = await getEmailService();
// Verify connection first
const connectionOk = await emailService.verifyConnection();

View File

@ -82,7 +82,7 @@ export default defineEventHandler(async (event) => {
// Send verification email
const { getEmailService } = await import('~/server/utils/email');
const emailService = getEmailService();
const emailService = await getEmailService();
try {
await emailService.sendWelcomeEmail(email, {

View File

@ -122,7 +122,7 @@ export default defineEventHandler(async (event) => {
const { getEmailService } = await import('~/server/utils/email');
const { generateEmailVerificationToken } = await import('~/server/utils/email-tokens');
const emailService = getEmailService();
const emailService = await getEmailService();
const verificationToken = await generateEmailVerificationToken(keycloakId, member.email);
const config = useRuntimeConfig();
const verificationLink = `${config.public.domain}/api/auth/verify-email?token=${verificationToken}`;

View File

@ -141,7 +141,7 @@ export default defineEventHandler(async (event) => {
const { getEmailService } = await import('~/server/utils/email');
const { generateEmailVerificationToken } = await import('~/server/utils/email-tokens');
const emailService = getEmailService();
const emailService = await getEmailService();
const verificationToken = await generateEmailVerificationToken(createdKeycloakId, body.email);
const config = useRuntimeConfig();
const verificationLink = `${config.public.domain}/api/auth/verify-email?token=${verificationToken}`;

View File

@ -334,8 +334,8 @@ let emailServiceInstance: EmailService | null = null;
/**
* Get or create EmailService instance with current SMTP config
*/
export function getEmailService(): EmailService {
const { getSMTPConfig } = require('./admin-config');
export async function getEmailService(): Promise<EmailService> {
const { getSMTPConfig } = await import('./admin-config');
const config = getSMTPConfig();
if (!emailServiceInstance) {