1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-09 15:35:22 +02:00

noop postmark sends if API key is not defined

This commit is contained in:
Tyler Myracle 2024-01-15 17:23:05 -06:00
parent 4906555e1f
commit f3ba272745
6 changed files with 30 additions and 10 deletions

View file

@ -1,6 +1,6 @@
import { ServerClient } from 'postmark'
import env from '../../env'
const postmark = new ServerClient(env.NX_POSTMARK_API_TOKEN)
const postmark = env.NX_POSTMARK_API_TOKEN ? new ServerClient(env.NX_POSTMARK_API_TOKEN) : undefined
export default postmark

View file

@ -74,7 +74,7 @@ const envSchema = z.object({
NX_POSTMARK_FROM_ADDRESS: z.string().default('account@maybe.co'),
NX_POSTMARK_REPLY_TO_ADDRESS: z.string().default('support@maybe.co'),
NX_POSTMARK_API_TOKEN: z.string().default('REPLACE_THIS'),
NX_POSTMARK_API_TOKEN: z.string().optional(),
})
const env = envSchema.parse(process.env)

View file

@ -1,6 +1,6 @@
import { ServerClient } from 'postmark'
import env from '../../env'
const postmark = new ServerClient(env.NX_POSTMARK_API_TOKEN)
const postmark = env.NX_POSTMARK_API_TOKEN ? new ServerClient(env.NX_POSTMARK_API_TOKEN) : undefined
export default postmark

View file

@ -29,7 +29,7 @@ const envSchema = z.object({
NX_POSTMARK_FROM_ADDRESS: z.string().default('account@maybe.co'),
NX_POSTMARK_REPLY_TO_ADDRESS: z.string().default('support@maybe.co'),
NX_POSTMARK_API_TOKEN: z.string().default('REPLACE_THIS'),
NX_POSTMARK_API_TOKEN: z.string().optional(),
NX_STRIPE_SECRET_KEY: z.string().default('sk_test_REPLACE_THIS'),
NX_CDN_PRIVATE_BUCKET: z.string().default('REPLACE_THIS'),

View file

@ -22,7 +22,7 @@ export interface IEmailService {
export class EmailService implements IEmailService {
constructor(
private readonly logger: Logger,
private readonly postmark: PostmarkServerClient,
private readonly postmark: PostmarkServerClient | undefined,
private readonly defaultAddresses: { from: string; replyTo?: string }
) {}
@ -85,6 +85,11 @@ export class EmailService implements IEmailService {
message.TemplateModel
)
if (!this.postmark) {
this.logger.info('Postmark API key not provided, skipping email send')
return undefined as unknown as MessageSendingResponse
}
return await this.postmark.sendEmailWithTemplate(message)
}
@ -94,6 +99,11 @@ export class EmailService implements IEmailService {
{ text: message.TextBody, html: message.HtmlBody }
)
if (!this.postmark) {
this.logger.info('Postmark API key not provided, skipping email send')
return undefined as unknown as MessageSendingResponse
}
return await this.postmark.sendEmail(message)
}
@ -108,9 +118,13 @@ export class EmailService implements IEmailService {
return (
await Promise.all(
chunk(messages, 500).map((chunk) =>
this.postmark.sendEmailBatchWithTemplates(chunk)
)
chunk(messages, 500).map((chunk) => {
if (!this.postmark) {
this.logger.info('Postmark API key not provided, skipping email send')
return [] as MessageSendingResponse[]
}
return this.postmark.sendEmailBatchWithTemplates(chunk)
})
)
).flat()
}
@ -124,7 +138,13 @@ export class EmailService implements IEmailService {
return (
await Promise.all(
chunk(messages, 500).map((chunk) => this.postmark.sendEmailBatch(chunk))
chunk(messages, 500).map((chunk) => {
if (!this.postmark) {
this.logger.info('Postmark API key not provided, skipping email send')
return [] as MessageSendingResponse[]
}
return this.postmark.sendEmailBatch(chunk)
})
)
).flat()
}

View file

@ -5,7 +5,7 @@
"scripts": {
"dev": "nx run-many --target serve --projects=client,server,workers --parallel --host 0.0.0.0 --nx-bail=true --maxParallel=100",
"dev:services": "COMPOSE_PROFILES=services docker-compose up -d",
"dev:services:all": "COMPOSE_PROFILES=services,ngrok,stripe docker-compose up",
"dev:services:all": "COMPOSE_PROFILES=services,ngrok docker-compose up",
"dev:workers:test": "nx test workers --skip-nx-cache --runInBand",
"dev:server:test": "nx test server --skip-nx-cache --runInBand",
"dev:test:unit": "yarn dev:ci:test --testPathPattern='^(?!.*integration).*$' --verbose --skip-nx-cache",