You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CoreID/app/jobs/PushNotify.job.js

34 lines
940 B

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