chore: modify mailer module

This commit is contained in:
mirarifhasan
2024-05-28 16:54:33 +06:00
parent da2ec5a46d
commit 6ec4714afa
2 changed files with 53 additions and 55 deletions

View File

@@ -691,13 +691,6 @@ export const MAILER_SMTP_USER_UNDEFINED = 'mailer/smtp_user_undefined' as const;
export const MAILER_SMTP_PASSWORD_UNDEFINED =
'mailer/smtp_password_undefined' as const;
/**
* MAILER_USE_GRANULAR environment variable is not defined
* (MailerModule)
*/
export const MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE =
'mailer/use_custom_configs_invalid_value' as const;
/**
* SharedRequest invalid request JSON format
* (ShortcodeService)

View File

@@ -4,11 +4,9 @@ import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handleba
import { MailerService } from './mailer.service';
import { throwErr } from 'src/utils';
import {
MAILER_FROM_ADDRESS_UNDEFINED,
MAILER_SMTP_PASSWORD_UNDEFINED,
MAILER_SMTP_URL_UNDEFINED,
MAILER_SMTP_USER_UNDEFINED,
MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE,
} from 'src/errors';
import { ConfigService } from '@nestjs/config';
import { loadInfraConfiguration } from 'src/infra-config/helper';
@@ -29,30 +27,57 @@ export class MailerModule {
}
// If mailer is ENABLED, return the module with configuration (service, listener, etc.)
let transportOption: TransportType;
const mailerAddressFrom =
// Determine transport configuration based on custom config flag
let transportOption = getTransportOption(env, config);
// Get mailer address from environment or config
const mailerAddressFrom = getMailerAddressFrom(env, config);
return {
module: MailerModule,
providers: [MailerService, MailerEventListener],
imports: [
NestMailerModule.forRoot({
transport: transportOption,
defaults: {
from: mailerAddressFrom,
},
template: {
dir: __dirname + '/templates',
adapter: new HandlebarsAdapter(),
},
}),
],
};
}
}
function isEnabled(value) {
return value === 'true';
}
function getMailerAddressFrom(env, config): string {
return (
env.INFRA.MAILER_ADDRESS_FROM ??
config.get('MAILER_ADDRESS_FROM') ??
throwErr(MAILER_SMTP_URL_UNDEFINED);
throwErr(MAILER_SMTP_URL_UNDEFINED)
);
}
function getTransportOption(env, config): TransportType {
const useCustomConfigs = isEnabled(
env.INFRA.MAILER_USE_CUSTOM_CONFIGS ??
config.get('MAILER_USE_CUSTOM_CONFIGS'),
);
if (
(env.INFRA.MAILER_USE_CUSTOM_CONFIGS ??
config.get('MAILER_USE_CUSTOM_CONFIGS')) === 'false'
) {
if (!useCustomConfigs) {
console.log('Using simple mailer configuration');
transportOption =
return (
env.INFRA.MAILER_SMTP_URL ??
config.get('MAILER_SMTP_URL') ??
throwErr(MAILER_SMTP_URL_UNDEFINED);
} else if (
(env.INFRA.MAILER_USE_CUSTOM_CONFIGS ??
config.get('MAILER_USE_CUSTOM_CONFIGS')) === 'true'
) {
console.log('Using advance mailer configuration');
transportOption = {
throwErr(MAILER_SMTP_URL_UNDEFINED)
);
} else {
console.log('Using advanced mailer configuration');
return {
host: env.INFRA.MAILER_SMTP_HOST ?? config.get('MAILER_SMTP_HOST'),
port: +env.INFRA.MAILER_SMTP_PORT ?? +config.get('MAILER_SMTP_PORT'),
secure:
@@ -73,25 +98,5 @@ export class MailerModule {
!!config.get('MAILER_TLS_REJECT_UNAUTHORIZED'),
},
};
} else {
throwErr(MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE);
}
return {
module: MailerModule,
providers: [MailerService, MailerEventListener],
imports: [
NestMailerModule.forRoot({
transport: transportOption,
defaults: {
from: mailerAddressFrom,
},
template: {
dir: __dirname + '/templates',
adapter: new HandlebarsAdapter(),
},
}),
],
};
}
}