X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fvideos.ts;h=dd02141eeac07f96eb0d5526e7cfbcadb6f44ad8;hb=156c50af3085468a47b8ae73fe8cfcae46b42398;hp=b1e7f20b9686a4618086d106f04e1cdd77c020d3;hpb=26649b4215ac68eed5601d9412d2d7ddee98b543;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index b1e7f20b9..dd02141ee 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -205,7 +205,7 @@ async function updateVideoFromAP (options: { let videoFieldsSave: any try { - const updatedVideo: VideoModel = await sequelizeTypescript.transaction(async t => { + await sequelizeTypescript.transaction(async t => { const sequelizeOptions = { transaction: t } @@ -230,6 +230,7 @@ async function updateVideoFromAP (options: { options.video.set('support', videoData.support) options.video.set('nsfw', videoData.nsfw) options.video.set('commentsEnabled', videoData.commentsEnabled) + options.video.set('downloadingEnabled', videoData.downloadingEnabled) options.video.set('waitTranscoding', videoData.waitTranscoding) options.video.set('state', videoData.state) options.video.set('duration', videoData.duration) @@ -256,8 +257,12 @@ async function updateVideoFromAP (options: { await Promise.all(destroyTasks) // Update or add other one - const upsertTasks = videoFileAttributes.map(a => VideoFileModel.upsert(a, sequelizeOptions)) - await Promise.all(upsertTasks) + const upsertTasks = videoFileAttributes.map(a => { + return VideoFileModel.upsert(a, { returning: true, transaction: t }) + .then(([ file ]) => file) + }) + + options.video.VideoFiles = await Promise.all(upsertTasks) } { @@ -274,13 +279,11 @@ async function updateVideoFromAP (options: { const videoCaptionsPromises = options.videoObject.subtitleLanguage.map(c => { return VideoCaptionModel.insertOrReplaceLanguage(options.video.id, c.identifier, t) }) - await Promise.all(videoCaptionsPromises) + options.video.VideoCaptions = await Promise.all(videoCaptionsPromises) } }) logger.info('Remote video with uuid %s updated', options.videoObject.uuid) - - return updatedVideo } catch (err) { if (options.video !== undefined && videoFieldsSave !== undefined) { resetSequelizeInstance(options.video, videoFieldsSave) @@ -392,12 +395,12 @@ async function refreshVideoIfNeeded (options: { channel: channelActor.VideoChannel, updateViews: options.refreshViews } - const videoUpdated = await retryTransactionWrapper(updateVideoFromAP, updateOptions) - await syncVideoExternalAttributes(videoUpdated, videoObject, options.syncParam) + await retryTransactionWrapper(updateVideoFromAP, updateOptions) + await syncVideoExternalAttributes(video, videoObject, options.syncParam) - return videoUpdated + return video } catch (err) { - logger.warn('Cannot refresh video.', { err }) + logger.warn('Cannot refresh video %s.', options.video.url, { err }) return video } } @@ -439,6 +442,7 @@ async function videoActivityObjectToDBAttributes ( support, nsfw: videoObject.sensitive, commentsEnabled: videoObject.commentsEnabled, + downloadingEnabled: videoObject.downloadingEnabled, waitTranscoding: videoObject.waitTranscoding, state: videoObject.state, channelId: videoChannel.id, @@ -455,11 +459,11 @@ async function videoActivityObjectToDBAttributes ( } } -function videoFileActivityUrlToDBAttributes (videoCreated: VideoModel, videoObject: VideoTorrentObject) { +function videoFileActivityUrlToDBAttributes (video: VideoModel, videoObject: VideoTorrentObject) { const fileUrls = videoObject.url.filter(u => isActivityVideoUrlObject(u)) as ActivityVideoUrlObject[] if (fileUrls.length === 0) { - throw new Error('Cannot find video files for ' + videoCreated.url) + throw new Error('Cannot find video files for ' + video.url) } const attributes: VideoFileModel[] = [] @@ -481,7 +485,7 @@ function videoFileActivityUrlToDBAttributes (videoCreated: VideoModel, videoObje infoHash: parsed.infoHash, resolution: fileUrl.height, size: fileUrl.size, - videoId: videoCreated.id, + videoId: video.id, fps: fileUrl.fps || -1 } as VideoFileModel attributes.push(attribute)