X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fvideo-blacklist.ts;h=fd5837a3a19bd394611586dc07142722beb7fe4c;hb=f44cd95c013c21454dc868c879c3d9230e8637c7;hp=f1657e8f1dd509133ad1ea210e47824745b0b075;hpb=5baee5fca418487e72ddcd6419d31bca8659b668;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/video-blacklist.ts b/server/lib/video-blacklist.ts index f1657e8f1..fd5837a3a 100644 --- a/server/lib/video-blacklist.ts +++ b/server/lib/video-blacklist.ts @@ -1,4 +1,5 @@ import { Transaction } from 'sequelize' +import { afterCommitIfTransaction } from '@server/helpers/database-utils' import { sequelizeTypescript } from '@server/initializers/database' import { MUser, @@ -7,17 +8,20 @@ import { MVideoBlacklistVideo, MVideoFullLight, MVideoWithBlacklistLight -} from '@server/typings/models' -import { UserRight, VideoBlacklistCreate, VideoBlockType } from '../../shared/models' +} from '@server/types/models' +import { LiveVideoError, UserRight, VideoBlacklistCreate, VideoBlacklistType } from '../../shared/models' import { UserAdminFlag } from '../../shared/models/users/user-flag.model' -import { logger } from '../helpers/logger' +import { logger, loggerTagsFactory } from '../helpers/logger' import { CONFIG } from '../initializers/config' import { VideoBlacklistModel } from '../models/video/video-blacklist' import { sendDeleteVideo } from './activitypub/send' import { federateVideoIfNeeded } from './activitypub/videos' +import { LiveManager } from './live/live-manager' import { Notifier } from './notifier' import { Hooks } from './plugins/hooks' +const lTags = loggerTagsFactory('blacklist') + async function autoBlacklistVideoIfNeeded (parameters: { video: MVideoWithBlacklistLight user?: MUser @@ -39,7 +43,7 @@ async function autoBlacklistVideoIfNeeded (parameters: { videoId: video.id, unfederated: true, reason: 'Auto-blacklisted. Moderator review required.', - type: VideoBlockType.AUTO_BEFORE_PUBLISHED + type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED } const [ videoBlacklist ] = await VideoBlacklistModel.findOrCreate({ where: { @@ -52,9 +56,13 @@ async function autoBlacklistVideoIfNeeded (parameters: { videoBlacklist.Video = video - if (notify) Notifier.Instance.notifyOnVideoAutoBlacklist(videoBlacklist) + if (notify) { + afterCommitIfTransaction(transaction, () => { + Notifier.Instance.notifyOnVideoAutoBlacklist(videoBlacklist) + }) + } - logger.info('Video %s auto-blacklisted.', video.uuid) + logger.info('Video %s auto-blacklisted.', video.uuid, lTags(video.uuid)) return true } @@ -64,15 +72,18 @@ async function blacklistVideo (videoInstance: MVideoAccountLight, options: Video videoId: videoInstance.id, unfederated: options.unfederate === true, reason: options.reason, - type: VideoBlockType.MANUAL - } - ) + type: VideoBlacklistType.MANUAL + }) blacklist.Video = videoInstance if (options.unfederate === true) { await sendDeleteVideo(videoInstance, undefined) } + if (videoInstance.isLive) { + LiveManager.Instance.stopSessionOf(videoInstance.id, LiveVideoError.BLACKLISTED) + } + Notifier.Instance.notifyOnVideoBlacklist(blacklist) } @@ -94,7 +105,7 @@ async function unblacklistVideo (videoBlacklist: MVideoBlacklist, video: MVideoF Notifier.Instance.notifyOnVideoUnblacklist(video) - if (videoBlacklistType === VideoBlockType.AUTO_BEFORE_PUBLISHED) { + if (videoBlacklistType === VideoBlacklistType.AUTO_BEFORE_PUBLISHED) { Notifier.Instance.notifyOnVideoPublishedAfterRemovedFromAutoBlacklist(video) // Delete on object so new video notifications will send @@ -126,7 +137,7 @@ function autoBlacklistNeeded (parameters: { if (!CONFIG.AUTO_BLACKLIST.VIDEOS.OF_USERS.ENABLED || !user) return false if (isRemote || isNew === false) return false - if (user.hasRight(UserRight.MANAGE_VIDEO_BLOCKS) || user.hasAdminFlag(UserAdminFlag.BYPASS_VIDEO_AUTO_BLOCK)) return false + if (user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) || user.hasAdminFlag(UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST)) return false return true }