]>
Commit | Line | Data |
---|---|---|
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 { MUserDefault, MUserWithNotificationSetting, MVideoFullLight, UserNotificationModelForApi } from '@server/types/models' | |
6 | import { UserNotificationType } from '@shared/models' | |
7 | import { AbstractNotification } from '../common/abstract-notification' | |
8 | ||
9 | export abstract class AbstractOwnedVideoPublication extends AbstractNotification <MVideoFullLight> { | |
10 | protected user: MUserDefault | |
11 | ||
12 | async prepare () { | |
13 | this.user = await UserModel.loadByVideoId(this.payload.id) | |
14 | } | |
15 | ||
16 | log () { | |
17 | logger.info('Notifying user %s of the publication of its video %s.', this.user.username, this.payload.url) | |
18 | } | |
19 | ||
20 | getSetting (user: MUserWithNotificationSetting) { | |
21 | return user.NotificationSetting.myVideoPublished | |
22 | } | |
23 | ||
24 | getTargetUsers () { | |
25 | if (!this.user) return [] | |
26 | ||
27 | return [ this.user ] | |
28 | } | |
29 | ||
30 | createNotification (user: MUserWithNotificationSetting) { | |
31 | const notification = UserNotificationModel.build<UserNotificationModelForApi>({ | |
32 | type: UserNotificationType.MY_VIDEO_PUBLISHED, | |
33 | userId: user.id, | |
34 | videoId: this.payload.id | |
35 | }) | |
36 | notification.Video = this.payload | |
37 | ||
38 | return notification | |
39 | } | |
40 | ||
41 | createEmail (to: string) { | |
42 | const videoUrl = WEBSERVER.URL + this.payload.getWatchStaticPath() | |
43 | ||
44 | return { | |
45 | to, | |
46 | subject: `Your video ${this.payload.name} has been published`, | |
47 | text: `Your video "${this.payload.name}" has been published.`, | |
48 | locals: { | |
49 | title: 'Your video is live', | |
50 | action: { | |
51 | text: 'View video', | |
52 | url: videoUrl | |
53 | } | |
54 | } | |
55 | } | |
56 | } | |
57 | } |