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)
})
},
}