aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-10-01 15:34:31 +0200
committerChocobozzz <me@florianbigard.com>2018-10-01 15:34:31 +0200
commitd382f4e9175c1520835e41c3573471a84bcf1713 (patch)
tree477109294a60b60f89e9127f1f0f75c18e8ed612
parent601527d7953a83d6ad08dbb2ed8ac02851beaf1e (diff)
downloadPeerTube-d382f4e9175c1520835e41c3573471a84bcf1713.tar.gz
PeerTube-d382f4e9175c1520835e41c3573471a84bcf1713.tar.zst
PeerTube-d382f4e9175c1520835e41c3573471a84bcf1713.zip
Fix refreshing external video attributes
-rw-r--r--server/lib/activitypub/videos.ts22
-rw-r--r--server/models/video/video-caption.ts3
2 files changed, 13 insertions, 12 deletions
diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts
index b1e7f20b9..34685b6b1 100644
--- a/server/lib/activitypub/videos.ts
+++ b/server/lib/activitypub/videos.ts
@@ -205,7 +205,7 @@ async function updateVideoFromAP (options: {
205 let videoFieldsSave: any 205 let videoFieldsSave: any
206 206
207 try { 207 try {
208 const updatedVideo: VideoModel = await sequelizeTypescript.transaction(async t => { 208 await sequelizeTypescript.transaction(async t => {
209 const sequelizeOptions = { 209 const sequelizeOptions = {
210 transaction: t 210 transaction: t
211 } 211 }
@@ -256,8 +256,12 @@ async function updateVideoFromAP (options: {
256 await Promise.all(destroyTasks) 256 await Promise.all(destroyTasks)
257 257
258 // Update or add other one 258 // Update or add other one
259 const upsertTasks = videoFileAttributes.map(a => VideoFileModel.upsert(a, sequelizeOptions)) 259 const upsertTasks = videoFileAttributes.map(a => {
260 await Promise.all(upsertTasks) 260 return VideoFileModel.upsert<VideoFileModel>(a, { returning: true, transaction: t })
261 .then(([ file ]) => file)
262 })
263
264 options.video.VideoFiles = await Promise.all(upsertTasks)
261 } 265 }
262 266
263 { 267 {
@@ -274,13 +278,11 @@ async function updateVideoFromAP (options: {
274 const videoCaptionsPromises = options.videoObject.subtitleLanguage.map(c => { 278 const videoCaptionsPromises = options.videoObject.subtitleLanguage.map(c => {
275 return VideoCaptionModel.insertOrReplaceLanguage(options.video.id, c.identifier, t) 279 return VideoCaptionModel.insertOrReplaceLanguage(options.video.id, c.identifier, t)
276 }) 280 })
277 await Promise.all(videoCaptionsPromises) 281 options.video.VideoCaptions = await Promise.all(videoCaptionsPromises)
278 } 282 }
279 }) 283 })
280 284
281 logger.info('Remote video with uuid %s updated', options.videoObject.uuid) 285 logger.info('Remote video with uuid %s updated', options.videoObject.uuid)
282
283 return updatedVideo
284 } catch (err) { 286 } catch (err) {
285 if (options.video !== undefined && videoFieldsSave !== undefined) { 287 if (options.video !== undefined && videoFieldsSave !== undefined) {
286 resetSequelizeInstance(options.video, videoFieldsSave) 288 resetSequelizeInstance(options.video, videoFieldsSave)
@@ -392,12 +394,10 @@ async function refreshVideoIfNeeded (options: {
392 channel: channelActor.VideoChannel, 394 channel: channelActor.VideoChannel,
393 updateViews: options.refreshViews 395 updateViews: options.refreshViews
394 } 396 }
395 const videoUpdated = await retryTransactionWrapper(updateVideoFromAP, updateOptions) 397 await retryTransactionWrapper(updateVideoFromAP, updateOptions)
396 await syncVideoExternalAttributes(videoUpdated, videoObject, options.syncParam) 398 await syncVideoExternalAttributes(video, videoObject, options.syncParam)
397
398 return videoUpdated
399 } catch (err) { 399 } catch (err) {
400 logger.warn('Cannot refresh video.', { err }) 400 logger.warn('Cannot refresh video %s.', options.video.url, { err })
401 return video 401 return video
402 } 402 }
403} 403}
diff --git a/server/models/video/video-caption.ts b/server/models/video/video-caption.ts
index 10ef46c14..b4f17b481 100644
--- a/server/models/video/video-caption.ts
+++ b/server/models/video/video-caption.ts
@@ -120,7 +120,8 @@ export class VideoCaptionModel extends Model<VideoCaptionModel> {
120 language 120 language
121 } 121 }
122 122
123 return VideoCaptionModel.upsert(values, { transaction }) 123 return VideoCaptionModel.upsert<VideoCaptionModel>(values, { transaction, returning: true })
124 .then(([ caption ]) => caption)
124 } 125 }
125 126
126 static listVideoCaptions (videoId: number) { 127 static listVideoCaptions (videoId: number) {