Skip to content
Snippets Groups Projects
reminders.js 1.13 KiB
Newer Older
const { jobs: { connectToJobQueue } } = require('pubsweet-server/src')
const { getEmailCopy } = require('../emails/emailCopy')

module.exports = {
  scheduleReminderJob: async ({ email, subject, titleText, expectedDate }) => {
    const jobQueue = await connectToJobQueue()
    const queue = 'remind-after-4-days'

    const { paragraph, ...bodyProps } = getEmailCopy({
      emailType: 'reviewer-resend-invitation',
      titleText,
      expectedDate,
    })

    email.bodyProps = bodyProps
    email.content.subject = subject

    const minutes = 2
    const currentDate = new Date()
    const futureDate = new Date(currentDate.getTime() + minutes * 60000)
    console.log('FUT DATE:', futureDate.toISOString())
    // Add job to the queue
    await jobQueue.publishAfter(queue, {}, {}, futureDate.toISOString())

    // Subscribe to the job queue with an async handler
    await jobQueue.subscribe(queue, async job => {
      await email.sendEmail()
      return `a ${subject} notification has been sent to ${email.toUser.email}`
    })

    await jobQueue.onComplete(queue, job => {
      console.log('JOB RESPONSE', job.data.response)
    })
  },
}