add support for Gotify push notifications
This commit is contained in:
31
app/jobs/PushNotify.job.js
Normal file
31
app/jobs/PushNotify.job.js
Normal file
@@ -0,0 +1,31 @@
|
||||
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
|
||||
Reference in New Issue
Block a user