X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fnotifier.ts;h=40cff66d224d4798b0feedf5ce9f6bc86232d434;hb=d95d15598847c7f020aa056e7e6e0c02d2bbf732;hp=3e90bb57e8a461a38ae9aa06c4c939f44810c023;hpb=5baee5fca418487e72ddcd6419d31bca8659b668;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/notifier.ts b/server/lib/notifier.ts index 3e90bb57e..40cff66d2 100644 --- a/server/lib/notifier.ts +++ b/server/lib/notifier.ts @@ -7,24 +7,19 @@ import { MUserNotifSettingAccount, MUserWithNotificationSetting, UserNotificationModelForApi -} from '@server/typings/models/user' -import { MVideoImportVideo } from '@server/typings/models/video/video-import' +} from '@server/types/models/user' +import { MVideoBlacklistLightVideo, MVideoBlacklistVideo } from '@server/types/models/video/video-blacklist' +import { MVideoImportVideo } from '@server/types/models/video/video-import' +import { Abuse } from '@shared/models' import { UserNotificationSettingValue, UserNotificationType, UserRight } from '../../shared/models/users' -import { VideoAbuse, VideoPrivacy, VideoState } from '../../shared/models/videos' +import { VideoPrivacy, VideoState } from '../../shared/models/videos' import { logger } from '../helpers/logger' import { CONFIG } from '../initializers/config' import { AccountBlocklistModel } from '../models/account/account-blocklist' import { UserModel } from '../models/account/user' import { UserNotificationModel } from '../models/account/user-notification' -import { MAccountServer, MActorFollowFull } from '../typings/models' -import { - MCommentOwnerVideo, - MVideoAbuseVideo, - MVideoAccountLight, - MVideoBlacklistLightVideo, - MVideoBlacklistVideo, - MVideoFullLight -} from '../typings/models/video' +import { MAbuseFull, MAbuseVideo, MAccountServer, MActorFollowFull } from '../types/models' +import { MCommentOwnerVideo, MVideoAccountLight, MVideoFullLight } from '../types/models/video' import { isBlockedByServerOrAccount } from './blocklist' import { Emailer } from './emailer' import { PeerTubeSocket } from './peertube-socket' @@ -78,9 +73,9 @@ class Notifier { .catch(err => logger.error('Cannot notify mentions of comment %s.', comment.url, { err })) } - notifyOnNewVideoAbuse (parameters: { videoAbuse: VideoAbuse, videoAbuseInstance: MVideoAbuseVideo, reporter: string }): void { - this.notifyModeratorsOfNewVideoAbuse(parameters) - .catch(err => logger.error('Cannot notify of new video abuse of video %s.', parameters.videoAbuseInstance.Video.url, { err })) + notifyOnNewAbuse (parameters: { abuse: Abuse, abuseInstance: MAbuseFull, reporter: string }): void { + this.notifyModeratorsOfNewAbuse(parameters) + .catch(err => logger.error('Cannot notify of new abuse %d.', parameters.abuseInstance.id, { err })) } notifyOnVideoAutoBlacklist (videoBlacklist: MVideoBlacklistLightVideo): void { @@ -354,40 +349,44 @@ class Notifier { return this.notify({ users: admins, settingGetter, notificationCreator, emailSender }) } - private async notifyModeratorsOfNewVideoAbuse (parameters: { - videoAbuse: VideoAbuse - videoAbuseInstance: MVideoAbuseVideo + private async notifyModeratorsOfNewAbuse (parameters: { + abuse: Abuse + abuseInstance: MAbuseFull reporter: string }) { - const moderators = await UserModel.listWithRight(UserRight.MANAGE_VIDEO_ABUSES) + const { abuse, abuseInstance } = parameters + + const moderators = await UserModel.listWithRight(UserRight.MANAGE_ABUSES) if (moderators.length === 0) return - logger.info('Notifying %s user/moderators of new video abuse %s.', moderators.length, parameters.videoAbuseInstance.Video.url) + const url = abuseInstance.VideoAbuse?.Video?.url || abuseInstance.VideoCommentAbuse?.VideoComment?.url + + logger.info('Notifying %s user/moderators of new abuse %s.', moderators.length, url) function settingGetter (user: MUserWithNotificationSetting) { return user.NotificationSetting.videoAbuseAsModerator } async function notificationCreator (user: MUserWithNotificationSetting) { - const notification: UserNotificationModelForApi = await UserNotificationModel.create({ + const notification = await UserNotificationModel.create({ type: UserNotificationType.NEW_VIDEO_ABUSE_FOR_MODERATORS, userId: user.id, - videoAbuseId: parameters.videoAbuse.id + abuseId: abuse.id }) - notification.VideoAbuse = parameters.videoAbuseInstance + notification.Abuse = abuseInstance return notification } function emailSender (emails: string[]) { - return Emailer.Instance.addVideoAbuseModeratorsNotification(emails, parameters) + return Emailer.Instance.addAbuseModeratorsNotification(emails, parameters) } return this.notify({ users: moderators, settingGetter, notificationCreator, emailSender }) } private async notifyModeratorsOfVideoAutoBlacklist (videoBlacklist: MVideoBlacklistLightVideo) { - const moderators = await UserModel.listWithRight(UserRight.MANAGE_VIDEO_BLOCKS) + const moderators = await UserModel.listWithRight(UserRight.MANAGE_VIDEO_BLACKLIST) if (moderators.length === 0) return logger.info('Notifying %s moderators of video auto-blacklist %s.', moderators.length, videoBlacklist.Video.url) @@ -398,7 +397,7 @@ class Notifier { async function notificationCreator (user: MUserWithNotificationSetting) { const notification = await UserNotificationModel.create({ - type: UserNotificationType.VIDEO_AUTO_BLOCK_FOR_MODERATORS, + type: UserNotificationType.VIDEO_AUTO_BLACKLIST_FOR_MODERATORS, userId: user.id, videoBlacklistId: videoBlacklist.id }) @@ -426,7 +425,7 @@ class Notifier { async function notificationCreator (user: MUserWithNotificationSetting) { const notification = await UserNotificationModel.create({ - type: UserNotificationType.BLOCK_ON_MY_VIDEO, + type: UserNotificationType.BLACKLIST_ON_MY_VIDEO, userId: user.id, videoBlacklistId: videoBlacklist.id }) @@ -454,7 +453,7 @@ class Notifier { async function notificationCreator (user: MUserWithNotificationSetting) { const notification = await UserNotificationModel.create({ - type: UserNotificationType.UNBLOCK_ON_MY_VIDEO, + type: UserNotificationType.UNBLACKLIST_ON_MY_VIDEO, userId: user.id, videoId: video.id })