CoreID/app/jobs/PushNotify.job.js
garrettmills 9b5216431d
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
Make jobs use built-in job logging
2020-12-04 20:40:27 -06:00

34 lines
940 B
JavaScript

const { Job } = require('flitter-jobs')
class PushNotifyJob extends Job {
static get services() {
return [...super.services, 'models', 'jobs', 'output']
}
async execute(job) {
try {
const User = this.models.get('auth:User')
const { data } = job
let { title = '', message, priority = 5, user_id } = data
const user = await User.findById(user_id)
if ( !user ) throw new Error('Invalid user_id.')
const notify = user.notify_config
if ( !notify || !notify.active ) throw new Error('User does not have notifications configured.')
this.info(`Sending notification to ${user.uid}...`)
await notify.send({ title, message, priority })
} catch (e) {
this.error(e)
throw e
}
this.success(`Notification sent!`)
}
}
module.exports = exports = PushNotifyJob