diff options
author | Chocobozzz <me@florianbigard.com> | 2022-08-03 11:33:43 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2022-08-03 11:33:43 +0200 |
commit | 785f1897a42984ece9c6f65829d195d67e331d95 (patch) | |
tree | 1cb3b33cfc797b8f1abbab90749c1e3187bbd311 /server/lib/notifier/notifier.ts | |
parent | 0260dc8aca952f9412a8620e433b9e16e675696e (diff) | |
download | PeerTube-785f1897a42984ece9c6f65829d195d67e331d95.tar.gz PeerTube-785f1897a42984ece9c6f65829d195d67e331d95.tar.zst PeerTube-785f1897a42984ece9c6f65829d195d67e331d95.zip |
Add notification plugin hook
Diffstat (limited to 'server/lib/notifier/notifier.ts')
-rw-r--r-- | server/lib/notifier/notifier.ts | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/server/lib/notifier/notifier.ts b/server/lib/notifier/notifier.ts index a6f13780b..d1c4c0215 100644 --- a/server/lib/notifier/notifier.ts +++ b/server/lib/notifier/notifier.ts | |||
@@ -7,12 +7,12 @@ import { MAbuseFull, MAbuseMessage, MActorFollowFull, MApplication, MPlugin } fr | |||
7 | import { MCommentOwnerVideo, MVideoAccountLight, MVideoFullLight } from '../../types/models/video' | 7 | import { MCommentOwnerVideo, MVideoAccountLight, MVideoFullLight } from '../../types/models/video' |
8 | import { JobQueue } from '../job-queue' | 8 | import { JobQueue } from '../job-queue' |
9 | import { PeerTubeSocket } from '../peertube-socket' | 9 | import { PeerTubeSocket } from '../peertube-socket' |
10 | import { Hooks } from '../plugins/hooks' | ||
10 | import { | 11 | import { |
11 | AbstractNotification, | 12 | AbstractNotification, |
12 | AbuseStateChangeForReporter, | 13 | AbuseStateChangeForReporter, |
13 | AutoFollowForInstance, | 14 | AutoFollowForInstance, |
14 | CommentMention, | 15 | CommentMention, |
15 | StudioEditionFinishedForOwner, | ||
16 | FollowForInstance, | 16 | FollowForInstance, |
17 | FollowForUser, | 17 | FollowForUser, |
18 | ImportFinishedForOwner, | 18 | ImportFinishedForOwner, |
@@ -31,6 +31,7 @@ import { | |||
31 | OwnedPublicationAfterScheduleUpdate, | 31 | OwnedPublicationAfterScheduleUpdate, |
32 | OwnedPublicationAfterTranscoding, | 32 | OwnedPublicationAfterTranscoding, |
33 | RegistrationForModerators, | 33 | RegistrationForModerators, |
34 | StudioEditionFinishedForOwner, | ||
34 | UnblacklistForOwner | 35 | UnblacklistForOwner |
35 | } from './shared' | 36 | } from './shared' |
36 | 37 | ||
@@ -222,15 +223,21 @@ class Notifier { | |||
222 | for (const user of users) { | 223 | for (const user of users) { |
223 | const setting = object.getSetting(user) | 224 | const setting = object.getSetting(user) |
224 | 225 | ||
225 | if (this.isWebNotificationEnabled(setting)) { | 226 | const webNotificationEnabled = this.isWebNotificationEnabled(setting) |
226 | const notification = await object.createNotification(user) | 227 | const emailNotificationEnabled = this.isEmailEnabled(user, setting) |
228 | const notification = object.createNotification(user) | ||
229 | |||
230 | if (webNotificationEnabled) { | ||
231 | await notification.save() | ||
227 | 232 | ||
228 | PeerTubeSocket.Instance.sendNotification(user.id, notification) | 233 | PeerTubeSocket.Instance.sendNotification(user.id, notification) |
229 | } | 234 | } |
230 | 235 | ||
231 | if (this.isEmailEnabled(user, setting)) { | 236 | if (emailNotificationEnabled) { |
232 | toEmails.push(user.email) | 237 | toEmails.push(user.email) |
233 | } | 238 | } |
239 | |||
240 | Hooks.runAction('action:notifier.notification.created', { webNotificationEnabled, emailNotificationEnabled, user, notification }) | ||
234 | } | 241 | } |
235 | 242 | ||
236 | for (const to of toEmails) { | 243 | for (const to of toEmails) { |