From 46a6db245f50249246325090eeaffd165453a396 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 6 Jun 2019 16:44:02 +0200 Subject: Add ability to set to private a public/unlisted video --- server/controllers/api/videos/index.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'server/controllers/api') diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 99900ca4a..5ebd8fbc4 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -199,11 +199,10 @@ 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()) { videoFile.resolution = DEFAULT_AUDIO_RESOLUTION @@ -321,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 @@ -357,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) -- cgit v1.2.3