UserOnboardingEmailManager.mjs 893 B

1234567891011121314151617181920212223242526272829
  1. import Queues from '../../infrastructure/Queues.mjs'
  2. import EmailHandler from '../Email/EmailHandler.mjs'
  3. import UserUpdater from './UserUpdater.mjs'
  4. import UserGetter from './UserGetter.mjs'
  5. import Settings from '@overleaf/settings'
  6. const ONE_DAY_MS = 24 * 60 * 60 * 1000
  7. async function scheduleOnboardingEmail(user) {
  8. await Queues.createScheduledJob(
  9. 'emails-onboarding',
  10. { data: { userId: user._id } },
  11. ONE_DAY_MS
  12. )
  13. }
  14. async function sendOnboardingEmail(userId) {
  15. const user = await UserGetter.promises.getUser({ _id: userId }, { email: 1 })
  16. if (Settings.enableOnboardingEmails && user) {
  17. await EmailHandler.promises.sendEmail('userOnboardingEmail', {
  18. to: user.email,
  19. })
  20. await UserUpdater.promises.updateUser(user._id, {
  21. $set: { onboardingEmailSentAt: new Date() },
  22. })
  23. }
  24. }
  25. export default { scheduleOnboardingEmail, sendOnboardingEmail }