-
Notifications
You must be signed in to change notification settings - Fork 526
/
Copy pathNotificationController.js
80 lines (66 loc) · 2.2 KB
/
NotificationController.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const Logger = require('../Logger')
const Database = require('../Database')
const { version } = require('../../package.json')
class NotificationController {
constructor() { }
get(req, res) {
res.json({
data: this.notificationManager.getData(),
settings: Database.notificationSettings
})
}
async update(req, res) {
const updated = Database.notificationSettings.update(req.body)
if (updated) {
await Database.updateSetting(Database.notificationSettings)
}
res.sendStatus(200)
}
getData(req, res) {
res.json(this.notificationManager.getData())
}
async fireTestEvent(req, res) {
await this.notificationManager.triggerNotification('onTest', { version: `v${version}` }, req.query.fail === '1')
res.sendStatus(200)
}
async createNotification(req, res) {
const success = Database.notificationSettings.createNotification(req.body)
if (success) {
await Database.updateSetting(Database.notificationSettings)
}
res.json(Database.notificationSettings)
}
async deleteNotification(req, res) {
if (Database.notificationSettings.removeNotification(req.notification.id)) {
await Database.updateSetting(Database.notificationSettings)
}
res.json(Database.notificationSettings)
}
async updateNotification(req, res) {
const success = Database.notificationSettings.updateNotification(req.body)
if (success) {
await Database.updateSetting(Database.notificationSettings)
}
res.json(Database.notificationSettings)
}
async sendNotificationTest(req, res) {
if (!Database.notificationSettings.isUseable) return res.status(500).send('Apprise is not configured')
const success = await this.notificationManager.sendTestNotification(req.notification)
if (success) res.sendStatus(200)
else res.sendStatus(500)
}
middleware(req, res, next) {
if (!req.user.isAdminOrUp) {
return res.sendStatus(404)
}
if (req.params.id) {
const notification = Database.notificationSettings.getNotification(req.params.id)
if (!notification) {
return res.sendStatus(404)
}
req.notification = notification
}
next()
}
}
module.exports = new NotificationController()