32 lines
940 B
JavaScript
32 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.output.info(`Sending notification to ${user.uid}...`)
|
||
|
|
||
|
await notify.send({ title, message, priority })
|
||
|
} catch (e) {
|
||
|
this.output.error(e)
|
||
|
}
|
||
|
this.output.success(`Notification sent!`)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = exports = PushNotifyJob
|