aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/emailer.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/emailer.ts')
-rw-r--r--server/lib/emailer.ts36
1 files changed, 17 insertions, 19 deletions
diff --git a/server/lib/emailer.ts b/server/lib/emailer.ts
index 73c2bcb1b..fe57a3e4c 100644
--- a/server/lib/emailer.ts
+++ b/server/lib/emailer.ts
@@ -3,16 +3,14 @@ import { isTestInstance } from '../helpers/core-utils'
3import { bunyanLogger, logger } from '../helpers/logger' 3import { bunyanLogger, logger } from '../helpers/logger'
4import { CONFIG } from '../initializers/config' 4import { CONFIG } from '../initializers/config'
5import { UserModel } from '../models/account/user' 5import { UserModel } from '../models/account/user'
6import { VideoModel } from '../models/video/video'
7import { JobQueue } from './job-queue' 6import { JobQueue } from './job-queue'
8import { EmailPayload } from './job-queue/handlers/email' 7import { EmailPayload } from './job-queue/handlers/email'
9import { readFileSync } from 'fs-extra' 8import { readFileSync } from 'fs-extra'
10import { VideoCommentModel } from '../models/video/video-comment'
11import { VideoAbuseModel } from '../models/video/video-abuse'
12import { VideoBlacklistModel } from '../models/video/video-blacklist' 9import { VideoBlacklistModel } from '../models/video/video-blacklist'
13import { VideoImportModel } from '../models/video/video-import'
14import { ActorFollowModel } from '../models/activitypub/actor-follow'
15import { WEBSERVER } from '../initializers/constants' 10import { WEBSERVER } from '../initializers/constants'
11import { MCommentOwnerVideo, MVideo, MVideoAbuseVideo, MVideoAccountLight, MVideoBlacklistVideo } from '../typings/models/video'
12import { MActorFollowActors, MActorFollowFull, MUser } from '../typings/models'
13import { MVideoImport, MVideoImportVideo } from '@server/typings/models/video/video-import'
16 14
17type SendEmailOptions = { 15type SendEmailOptions = {
18 to: string[] 16 to: string[]
@@ -90,7 +88,7 @@ class Emailer {
90 } 88 }
91 } 89 }
92 90
93 addNewVideoFromSubscriberNotification (to: string[], video: VideoModel) { 91 addNewVideoFromSubscriberNotification (to: string[], video: MVideoAccountLight) {
94 const channelName = video.VideoChannel.getDisplayName() 92 const channelName = video.VideoChannel.getDisplayName()
95 const videoUrl = WEBSERVER.URL + video.getWatchStaticPath() 93 const videoUrl = WEBSERVER.URL + video.getWatchStaticPath()
96 94
@@ -111,7 +109,7 @@ class Emailer {
111 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 109 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
112 } 110 }
113 111
114 addNewFollowNotification (to: string[], actorFollow: ActorFollowModel, followType: 'account' | 'channel') { 112 addNewFollowNotification (to: string[], actorFollow: MActorFollowFull, followType: 'account' | 'channel') {
115 const followerName = actorFollow.ActorFollower.Account.getDisplayName() 113 const followerName = actorFollow.ActorFollower.Account.getDisplayName()
116 const followingName = (actorFollow.ActorFollowing.VideoChannel || actorFollow.ActorFollowing.Account).getDisplayName() 114 const followingName = (actorFollow.ActorFollowing.VideoChannel || actorFollow.ActorFollowing.Account).getDisplayName()
117 115
@@ -130,7 +128,7 @@ class Emailer {
130 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 128 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
131 } 129 }
132 130
133 addNewInstanceFollowerNotification (to: string[], actorFollow: ActorFollowModel) { 131 addNewInstanceFollowerNotification (to: string[], actorFollow: MActorFollowActors) {
134 const awaitingApproval = actorFollow.state === 'pending' ? ' awaiting manual approval.' : '' 132 const awaitingApproval = actorFollow.state === 'pending' ? ' awaiting manual approval.' : ''
135 133
136 const text = `Hi dear admin,\n\n` + 134 const text = `Hi dear admin,\n\n` +
@@ -148,7 +146,7 @@ class Emailer {
148 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 146 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
149 } 147 }
150 148
151 myVideoPublishedNotification (to: string[], video: VideoModel) { 149 myVideoPublishedNotification (to: string[], video: MVideo) {
152 const videoUrl = WEBSERVER.URL + video.getWatchStaticPath() 150 const videoUrl = WEBSERVER.URL + video.getWatchStaticPath()
153 151
154 const text = `Hi dear user,\n\n` + 152 const text = `Hi dear user,\n\n` +
@@ -168,7 +166,7 @@ class Emailer {
168 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 166 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
169 } 167 }
170 168
171 myVideoImportSuccessNotification (to: string[], videoImport: VideoImportModel) { 169 myVideoImportSuccessNotification (to: string[], videoImport: MVideoImportVideo) {
172 const videoUrl = WEBSERVER.URL + videoImport.Video.getWatchStaticPath() 170 const videoUrl = WEBSERVER.URL + videoImport.Video.getWatchStaticPath()
173 171
174 const text = `Hi dear user,\n\n` + 172 const text = `Hi dear user,\n\n` +
@@ -188,7 +186,7 @@ class Emailer {
188 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 186 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
189 } 187 }
190 188
191 myVideoImportErrorNotification (to: string[], videoImport: VideoImportModel) { 189 myVideoImportErrorNotification (to: string[], videoImport: MVideoImport) {
192 const importUrl = WEBSERVER.URL + '/my-account/video-imports' 190 const importUrl = WEBSERVER.URL + '/my-account/video-imports'
193 191
194 const text = `Hi dear user,\n\n` + 192 const text = `Hi dear user,\n\n` +
@@ -208,7 +206,7 @@ class Emailer {
208 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 206 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
209 } 207 }
210 208
211 addNewCommentOnMyVideoNotification (to: string[], comment: VideoCommentModel) { 209 addNewCommentOnMyVideoNotification (to: string[], comment: MCommentOwnerVideo) {
212 const accountName = comment.Account.getDisplayName() 210 const accountName = comment.Account.getDisplayName()
213 const video = comment.Video 211 const video = comment.Video
214 const commentUrl = WEBSERVER.URL + comment.getCommentStaticPath() 212 const commentUrl = WEBSERVER.URL + comment.getCommentStaticPath()
@@ -230,7 +228,7 @@ class Emailer {
230 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 228 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
231 } 229 }
232 230
233 addNewCommentMentionNotification (to: string[], comment: VideoCommentModel) { 231 addNewCommentMentionNotification (to: string[], comment: MCommentOwnerVideo) {
234 const accountName = comment.Account.getDisplayName() 232 const accountName = comment.Account.getDisplayName()
235 const video = comment.Video 233 const video = comment.Video
236 const commentUrl = WEBSERVER.URL + comment.getCommentStaticPath() 234 const commentUrl = WEBSERVER.URL + comment.getCommentStaticPath()
@@ -252,7 +250,7 @@ class Emailer {
252 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 250 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
253 } 251 }
254 252
255 addVideoAbuseModeratorsNotification (to: string[], videoAbuse: VideoAbuseModel) { 253 addVideoAbuseModeratorsNotification (to: string[], videoAbuse: MVideoAbuseVideo) {
256 const videoUrl = WEBSERVER.URL + videoAbuse.Video.getWatchStaticPath() 254 const videoUrl = WEBSERVER.URL + videoAbuse.Video.getWatchStaticPath()
257 255
258 const text = `Hi,\n\n` + 256 const text = `Hi,\n\n` +
@@ -269,7 +267,7 @@ class Emailer {
269 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 267 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
270 } 268 }
271 269
272 addVideoAutoBlacklistModeratorsNotification (to: string[], video: VideoModel) { 270 addVideoAutoBlacklistModeratorsNotification (to: string[], video: MVideo) {
273 const VIDEO_AUTO_BLACKLIST_URL = WEBSERVER.URL + '/admin/moderation/video-auto-blacklist/list' 271 const VIDEO_AUTO_BLACKLIST_URL = WEBSERVER.URL + '/admin/moderation/video-auto-blacklist/list'
274 const videoUrl = WEBSERVER.URL + video.getWatchStaticPath() 272 const videoUrl = WEBSERVER.URL + video.getWatchStaticPath()
275 273
@@ -292,7 +290,7 @@ class Emailer {
292 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 290 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
293 } 291 }
294 292
295 addNewUserRegistrationNotification (to: string[], user: UserModel) { 293 addNewUserRegistrationNotification (to: string[], user: MUser) {
296 const text = `Hi,\n\n` + 294 const text = `Hi,\n\n` +
297 `User ${user.username} just registered on ${WEBSERVER.HOST} PeerTube instance.\n\n` + 295 `User ${user.username} just registered on ${WEBSERVER.HOST} PeerTube instance.\n\n` +
298 `Cheers,\n` + 296 `Cheers,\n` +
@@ -307,7 +305,7 @@ class Emailer {
307 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 305 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
308 } 306 }
309 307
310 addVideoBlacklistNotification (to: string[], videoBlacklist: VideoBlacklistModel) { 308 addVideoBlacklistNotification (to: string[], videoBlacklist: MVideoBlacklistVideo) {
311 const videoName = videoBlacklist.Video.name 309 const videoName = videoBlacklist.Video.name
312 const videoUrl = WEBSERVER.URL + videoBlacklist.Video.getWatchStaticPath() 310 const videoUrl = WEBSERVER.URL + videoBlacklist.Video.getWatchStaticPath()
313 311
@@ -329,7 +327,7 @@ class Emailer {
329 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 327 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
330 } 328 }
331 329
332 addVideoUnblacklistNotification (to: string[], video: VideoModel) { 330 addVideoUnblacklistNotification (to: string[], video: MVideo) {
333 const videoUrl = WEBSERVER.URL + video.getWatchStaticPath() 331 const videoUrl = WEBSERVER.URL + video.getWatchStaticPath()
334 332
335 const text = 'Hi,\n\n' + 333 const text = 'Hi,\n\n' +
@@ -381,7 +379,7 @@ class Emailer {
381 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload }) 379 return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
382 } 380 }
383 381
384 addUserBlockJob (user: UserModel, blocked: boolean, reason?: string) { 382 addUserBlockJob (user: MUser, blocked: boolean, reason?: string) {
385 const reasonString = reason ? ` for the following reason: ${reason}` : '' 383 const reasonString = reason ? ` for the following reason: ${reason}` : ''
386 const blockedWord = blocked ? 'blocked' : 'unblocked' 384 const blockedWord = blocked ? 'blocked' : 'unblocked'
387 const blockedString = `Your account ${user.username} on ${WEBSERVER.HOST} has been ${blockedWord}${reasonString}.` 385 const blockedString = `Your account ${user.username} on ${WEBSERVER.HOST} has been ${blockedWord}${reasonString}.`