1 import { logger } from '@server/helpers/logger'
2 import { WEBSERVER } from '@server/initializers/constants'
3 import { UserModel } from '@server/models/user/user'
4 import { UserNotificationModel } from '@server/models/user/user-notification'
5 import { VideoChannelModel } from '@server/models/video/video-channel'
6 import { MUserDefault, MUserWithNotificationSetting, MVideoBlacklistLightVideo, UserNotificationModelForApi } from '@server/types/models'
7 import { UserNotificationType, UserRight } from '@shared/models'
8 import { AbstractNotification } from '../common/abstract-notification'
10 export class NewAutoBlacklistForModerators extends AbstractNotification <MVideoBlacklistLightVideo> {
11 private moderators: MUserDefault[]
14 this.moderators = await UserModel.listWithRight(UserRight.MANAGE_VIDEO_BLACKLIST)
18 logger.info('Notifying %s moderators of video auto-blacklist %s.', this.moderators.length, this.payload.Video.url)
21 getSetting (user: MUserWithNotificationSetting) {
22 return user.NotificationSetting.videoAutoBlacklistAsModerator
26 return this.moderators
29 createNotification (user: MUserWithNotificationSetting) {
30 const notification = UserNotificationModel.build<UserNotificationModelForApi>({
31 type: UserNotificationType.VIDEO_AUTO_BLACKLIST_FOR_MODERATORS,
33 videoBlacklistId: this.payload.id
35 notification.VideoBlacklist = this.payload
40 async createEmail (to: string) {
41 const videoAutoBlacklistUrl = WEBSERVER.URL + '/admin/moderation/video-auto-blacklist/list'
42 const videoUrl = WEBSERVER.URL + this.payload.Video.getWatchStaticPath()
43 const channel = await VideoChannelModel.loadAndPopulateAccount(this.payload.Video.channelId)
46 template: 'video-auto-blacklist-new',
48 subject: 'A new video is pending moderation',
50 channel: channel.toFormattedSummaryJSON(),
52 videoName: this.payload.Video.name,
54 text: 'Review autoblacklist',
55 url: videoAutoBlacklistUrl