X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fvideos%2Findex.ts;h=5ebd8fbc4903b852c3b2c389be1280da30838085;hb=b6a1dd4d1b3b0032f8b968e72cbd074f646e8827;hp=a2a615a797b8bf656ff3fe8d98adcb6e48ffd977;hpb=536598cfafab1c5e24e881db1c528489f804fb6b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index a2a615a79..5ebd8fbc4 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -1,12 +1,19 @@ import * as express from 'express' import { extname, join } from 'path' -import { VideoCreate, VideoPrivacy, VideoResolution, VideoState, VideoUpdate } from '../../../../shared' +import { VideoCreate, VideoPrivacy, VideoState, VideoUpdate } from '../../../../shared' import { getVideoFileFPS, getVideoFileResolution } from '../../../helpers/ffmpeg-utils' import { logger } from '../../../helpers/logger' import { auditLoggerFactory, getAuditIdFromRes, VideoAuditView } from '../../../helpers/audit-logger' import { getFormattedObjects, getServerActor } from '../../../helpers/utils' import { autoBlacklistVideoIfNeeded } from '../../../lib/video-blacklist' -import { MIMETYPES, VIDEO_CATEGORIES, VIDEO_LANGUAGES, VIDEO_LICENCES, VIDEO_PRIVACIES, DEFAULT_AUDIO_RESOLUTION } from '../../../initializers/constants' +import { + DEFAULT_AUDIO_RESOLUTION, + MIMETYPES, + VIDEO_CATEGORIES, + VIDEO_LANGUAGES, + VIDEO_LICENCES, + VIDEO_PRIVACIES +} from '../../../initializers/constants' import { changeVideoChannelShare, federateVideoIfNeeded, @@ -192,17 +199,16 @@ async function addVideo (req: express.Request, res: express.Response) { const video = new VideoModel(videoData) video.url = getVideoActivityPubUrl(video) // We use the UUID, so set the URL after building the object - const videoFileData = { + const videoFile = new VideoFileModel({ extname: extname(videoPhysicalFile.filename), size: videoPhysicalFile.size - } - const videoFile = new VideoFileModel(videoFileData) + }) - if (!videoFile.isAudio()) { + if (videoFile.isAudio()) { + videoFile.resolution = DEFAULT_AUDIO_RESOLUTION + } else { videoFile.fps = await getVideoFileFPS(videoPhysicalFile.path) videoFile.resolution = (await getVideoFileResolution(videoPhysicalFile.path)).videoFileResolution - } else { - videoFile.resolution = DEFAULT_AUDIO_RESOLUTION } // Move physical file @@ -314,7 +320,9 @@ async function updateVideo (req: express.Request, res: express.Response) { const videoFieldsSave = videoInstance.toJSON() const oldVideoAuditView = new VideoAuditView(videoInstance.toFormattedDetailsJSON()) const videoInfoToUpdate: VideoUpdate = req.body + const wasPrivateVideo = videoInstance.privacy === VideoPrivacy.PRIVATE + const wasNotPrivateVideo = videoInstance.privacy !== VideoPrivacy.PRIVATE const wasUnlistedVideo = videoInstance.privacy === VideoPrivacy.UNLISTED // Process thumbnail or create it from the video @@ -350,9 +358,15 @@ async function updateVideo (req: express.Request, res: express.Response) { const newPrivacy = parseInt(videoInfoToUpdate.privacy.toString(), 10) videoInstance.privacy = newPrivacy + // The video was private, and is not anymore -> publish it if (wasPrivateVideo === true && newPrivacy !== VideoPrivacy.PRIVATE) { videoInstance.publishedAt = new Date() } + + // The video was not private, but now it is -> we need to unfederate it + if (wasNotPrivateVideo === true && newPrivacy === VideoPrivacy.PRIVATE) { + await VideoModel.sendDelete(videoInstance, { transaction: t }) + } } const videoInstanceUpdated = await videoInstance.save(sequelizeOptions)