-import { MUser, MUserDefault } from '@server/types/models/user'
+import { MRegistration, MUser, MUserDefault } from '@server/types/models/user'
import { MVideoBlacklistLightVideo, MVideoBlacklistVideo } from '@server/types/models/video/video-blacklist'
import { UserNotificationSettingValue } from '../../../shared/models/users'
import { logger } from '../../helpers/logger'
import { MCommentOwnerVideo, MVideoAccountLight, MVideoFullLight } from '../../types/models/video'
import { JobQueue } from '../job-queue'
import { PeerTubeSocket } from '../peertube-socket'
+import { Hooks } from '../plugins/hooks'
import {
AbstractNotification,
AbuseStateChangeForReporter,
AutoFollowForInstance,
CommentMention,
- StudioEditionFinishedForOwner,
+ DirectRegistrationForModerators,
FollowForInstance,
FollowForUser,
ImportFinishedForOwner,
OwnedPublicationAfterAutoUnblacklist,
OwnedPublicationAfterScheduleUpdate,
OwnedPublicationAfterTranscoding,
- RegistrationForModerators,
+ RegistrationRequestForModerators,
+ StudioEditionFinishedForOwner,
UnblacklistForOwner
} from './shared'
newBlacklist: [ NewBlacklistForOwner ],
unblacklist: [ UnblacklistForOwner ],
importFinished: [ ImportFinishedForOwner ],
- userRegistration: [ RegistrationForModerators ],
+ directRegistration: [ DirectRegistrationForModerators ],
+ registrationRequest: [ RegistrationRequestForModerators ],
userFollow: [ FollowForUser ],
instanceFollow: [ FollowForInstance ],
autoInstanceFollow: [ AutoFollowForInstance ],
})
}
- notifyOnNewUserRegistration (user: MUserDefault): void {
- const models = this.notificationModels.userRegistration
+ notifyOnNewDirectRegistration (user: MUserDefault): void {
+ const models = this.notificationModels.directRegistration
this.sendNotifications(models, user)
.catch(err => logger.error('Cannot notify moderators of new user registration (%s).', user.username, { err }))
}
+ notifyOnNewRegistrationRequest (registration: MRegistration): void {
+ const models = this.notificationModels.registrationRequest
+
+ this.sendNotifications(models, registration)
+ .catch(err => logger.error('Cannot notify moderators of new registration request (%s).', registration.username, { err }))
+ }
+
notifyOfNewUserFollow (actorFollow: MActorFollowFull): void {
const models = this.notificationModels.userFollow
for (const user of users) {
const setting = object.getSetting(user)
- if (this.isWebNotificationEnabled(setting)) {
- const notification = await object.createNotification(user)
+ const webNotificationEnabled = this.isWebNotificationEnabled(setting)
+ const emailNotificationEnabled = this.isEmailEnabled(user, setting)
+ const notification = object.createNotification(user)
+
+ if (webNotificationEnabled) {
+ await notification.save()
PeerTubeSocket.Instance.sendNotification(user.id, notification)
}
- if (this.isEmailEnabled(user, setting)) {
+ if (emailNotificationEnabled) {
toEmails.push(user.email)
}
+
+ Hooks.runAction('action:notifier.notification.created', { webNotificationEnabled, emailNotificationEnabled, user, notification })
}
for (const to of toEmails) {
const payload = await object.createEmail(to)
- JobQueue.Instance.createJob({ type: 'email', payload })
+ JobQueue.Instance.createJobAsync({ type: 'email', payload })
}
}