34 lines
940 B
JavaScript
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
|