14 } from 'sequelize-typescript'
15 import { throwIfNotValid } from '../utils'
16 import { UserModel } from './user'
17 import { isUserNotificationSettingValid } from '../../helpers/custom-validators/user-notifications'
18 import { UserNotificationSetting, UserNotificationSettingValue } from '../../../shared/models/users/user-notification-setting.model'
19 import { clearCacheByUserId } from '../../lib/oauth-model'
22 tableName: 'userNotificationSetting',
30 export class UserNotificationSettingModel extends Model<UserNotificationSettingModel> {
35 'UserNotificationSettingNewVideoFromSubscription',
36 value => throwIfNotValid(value, isUserNotificationSettingValid, 'newVideoFromSubscription')
39 newVideoFromSubscription: UserNotificationSettingValue
44 'UserNotificationSettingNewCommentOnMyVideo',
45 value => throwIfNotValid(value, isUserNotificationSettingValid, 'newCommentOnMyVideo')
48 newCommentOnMyVideo: UserNotificationSettingValue
53 'UserNotificationSettingVideoAbuseAsModerator',
54 value => throwIfNotValid(value, isUserNotificationSettingValid, 'videoAbuseAsModerator')
57 videoAbuseAsModerator: UserNotificationSettingValue
62 'UserNotificationSettingVideoAutoBlacklistAsModerator',
63 value => throwIfNotValid(value, isUserNotificationSettingValid, 'videoAutoBlacklistAsModerator')
66 videoAutoBlacklistAsModerator: UserNotificationSettingValue
71 'UserNotificationSettingBlacklistOnMyVideo',
72 value => throwIfNotValid(value, isUserNotificationSettingValid, 'blacklistOnMyVideo')
75 blacklistOnMyVideo: UserNotificationSettingValue
80 'UserNotificationSettingMyVideoPublished',
81 value => throwIfNotValid(value, isUserNotificationSettingValid, 'myVideoPublished')
84 myVideoPublished: UserNotificationSettingValue
89 'UserNotificationSettingMyVideoImportFinished',
90 value => throwIfNotValid(value, isUserNotificationSettingValid, 'myVideoImportFinished')
93 myVideoImportFinished: UserNotificationSettingValue
98 'UserNotificationSettingNewUserRegistration',
99 value => throwIfNotValid(value, isUserNotificationSettingValid, 'newUserRegistration')
102 newUserRegistration: UserNotificationSettingValue
107 'UserNotificationSettingNewInstanceFollower',
108 value => throwIfNotValid(value, isUserNotificationSettingValid, 'newInstanceFollower')
111 newInstanceFollower: UserNotificationSettingValue
116 'UserNotificationSettingNewFollow',
117 value => throwIfNotValid(value, isUserNotificationSettingValid, 'newFollow')
120 newFollow: UserNotificationSettingValue
125 'UserNotificationSettingCommentMention',
126 value => throwIfNotValid(value, isUserNotificationSettingValid, 'commentMention')
129 commentMention: UserNotificationSettingValue
131 @ForeignKey(() => UserModel)
135 @BelongsTo(() => UserModel, {
151 static removeTokenCache (instance: UserNotificationSettingModel) {
152 return clearCacheByUserId(instance.userId)
155 toFormattedJSON (): UserNotificationSetting {
157 newCommentOnMyVideo: this.newCommentOnMyVideo,
158 newVideoFromSubscription: this.newVideoFromSubscription,
159 videoAbuseAsModerator: this.videoAbuseAsModerator,
160 videoAutoBlacklistAsModerator: this.videoAutoBlacklistAsModerator,
161 blacklistOnMyVideo: this.blacklistOnMyVideo,
162 myVideoPublished: this.myVideoPublished,
163 myVideoImportFinished: this.myVideoImportFinished,
164 newUserRegistration: this.newUserRegistration,
165 commentMention: this.commentMention,
166 newFollow: this.newFollow,
167 newInstanceFollower: this.newInstanceFollower