+ async addVideoAbuseReportJob (videoId: number) {
+ const video = await VideoModel.load(videoId)
+ if (!video) throw new Error('Unknown Video id during Abuse report.')
+
+ const text = `Hi,\n\n` +
+ `Your instance received an abuse for the following video ${video.url}\n\n` +
+ `Cheers,\n` +
+ `PeerTube.`
+
+ const to = await UserModel.listEmailsWithRight(UserRight.MANAGE_VIDEO_ABUSES)
+ const emailPayload: EmailPayload = {
+ to,
+ subject: '[PeerTube] Received a video abuse',
+ text
+ }
+
+ return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
+ }
+
+ async addVideoBlacklistReportJob (videoId: number, reason?: string) {
+ const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId)
+ if (!video) throw new Error('Unknown Video id during Blacklist report.')
+ // It's not our user
+ if (video.remote === true) return
+
+ const user = await UserModel.loadById(video.VideoChannel.Account.userId)
+
+ const reasonString = reason ? ` for the following reason: ${reason}` : ''
+ const blockedString = `Your video ${video.name} on ${CONFIG.WEBSERVER.HOST} has been blacklisted${reasonString}.`
+
+ const text = 'Hi,\n\n' +
+ blockedString +
+ '\n\n' +
+ 'Cheers,\n' +
+ `PeerTube.`
+
+ const to = user.email
+ const emailPayload: EmailPayload = {
+ to: [ to ],
+ subject: `[PeerTube] Video ${video.name} blacklisted`,
+ text
+ }
+
+ return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
+ }
+
+ async addVideoUnblacklistReportJob (videoId: number) {
+ const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId)
+ if (!video) throw new Error('Unknown Video id during Blacklist report.')
+ // It's not our user
+ if (video.remote === true) return
+
+ const user = await UserModel.loadById(video.VideoChannel.Account.userId)
+
+ const text = 'Hi,\n\n' +
+ `Your video ${video.name} on ${CONFIG.WEBSERVER.HOST} has been unblacklisted.` +
+ '\n\n' +
+ 'Cheers,\n' +
+ `PeerTube.`
+
+ const to = user.email
+ const emailPayload: EmailPayload = {
+ to: [ to ],
+ subject: `[PeerTube] Video ${video.name} unblacklisted`,
+ text
+ }
+
+ return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
+ }
+
+ addUserBlockJob (user: UserModel, blocked: boolean, reason?: string) {
+ const reasonString = reason ? ` for the following reason: ${reason}` : ''
+ const blockedWord = blocked ? 'blocked' : 'unblocked'
+ const blockedString = `Your account ${user.username} on ${CONFIG.WEBSERVER.HOST} has been ${blockedWord}${reasonString}.`
+
+ const text = 'Hi,\n\n' +
+ blockedString +
+ '\n\n' +
+ 'Cheers,\n' +
+ `PeerTube.`
+
+ const to = user.email
+ const emailPayload: EmailPayload = {
+ to: [ to ],
+ subject: '[PeerTube] Account ' + blockedWord,
+ text
+ }
+
+ return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
+ }
+