mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-01 05:11:34 +02:00
Separate Recurly business logic GitOrigin-RevId: 9c3b5ce61bdc7a6a5d3f507a31dc8919c882e476
42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
const { callbackify } = require('util')
|
|
const Settings = require('@overleaf/settings')
|
|
const logger = require('@overleaf/logger')
|
|
const EmailBuilder = require('./EmailBuilder')
|
|
const EmailSender = require('./EmailSender')
|
|
const Queues = require('../../infrastructure/Queues')
|
|
|
|
const EMAIL_SETTINGS = Settings.email || {}
|
|
|
|
/**
|
|
* @param {string} emailType
|
|
* @param {opts} any
|
|
*/
|
|
async function sendEmail(emailType, opts) {
|
|
const email = EmailBuilder.buildEmail(emailType, opts)
|
|
if (email.type === 'lifecycle' && !EMAIL_SETTINGS.lifecycle) {
|
|
return
|
|
}
|
|
opts.html = email.html
|
|
opts.text = email.text
|
|
opts.subject = email.subject
|
|
await EmailSender.promises.sendEmail(opts, emailType)
|
|
}
|
|
|
|
function sendDeferredEmail(emailType, opts, delay) {
|
|
Queues.createScheduledJob(
|
|
'deferred-emails',
|
|
{ data: { emailType, opts } },
|
|
delay
|
|
).catch(err => {
|
|
logger.warn({ err, emailType, opts }, 'failed to queue deferred email')
|
|
})
|
|
}
|
|
|
|
module.exports = {
|
|
sendEmail: callbackify(sendEmail),
|
|
sendDeferredEmail,
|
|
promises: {
|
|
sendEmail,
|
|
},
|
|
}
|