Files
overleaf-cep/services/web/app/src/Features/User/UserOnboardingEmailManager.js
Alexandre Bourdin bf921479a7 Add new scheduled-jobs queue dedicated to delayed jobs (#5496)
* Add new scheduled-jobs queue dedicated to delayed jobs

* Extract createScheduledJob and enqueue to a dedicated QueueHandler

* Queues cleanup & refactoring (review suggestions)

GitOrigin-RevId: f7b9380388430e878def83cd44e7d086d0fb92ad
2021-10-26 08:03:17 +00:00

29 lines
822 B
JavaScript

const Queues = require('../../infrastructure/Queues')
const EmailHandler = require('../Email/EmailHandler')
const UserUpdater = require('./UserUpdater')
const UserGetter = require('./UserGetter')
const ONE_DAY_MS = 24 * 60 * 60 * 1000
async function scheduleOnboardingEmail(user) {
await Queues.createScheduledJob(
'emails-onboarding',
{ data: { userId: user._id } },
ONE_DAY_MS
)
}
async function sendOnboardingEmail(userId) {
const user = await UserGetter.promises.getUser({ _id: userId }, { email: 1 })
if (user) {
await EmailHandler.promises.sendEmail('userOnboardingEmail', {
to: user.email,
})
await UserUpdater.promises.updateUser(user._id, {
$set: { onboardingEmailSentAt: new Date() },
})
}
}
module.exports = { scheduleOnboardingEmail, sendOnboardingEmail }