]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/video/video-format-utils.ts
Add AP icons breaking change
[github/Chocobozzz/PeerTube.git] / server / models / video / video-format-utils.ts
index d71a3a5dbee34b3e5a1c8719e646b3f3b3827bf0..89b0f50500b3cd0a39da31386d27b3b9870d0279 100644 (file)
@@ -175,6 +175,12 @@ function streamingPlaylistsModelToFormattedJSON (video: MVideo, playlists: MStre
     })
 }
 
+function sortByResolutionDesc (fileA: MVideoFile, fileB: MVideoFile) {
+  if (fileA.resolution < fileB.resolution) return 1
+  if (fileA.resolution === fileB.resolution) return 0
+  return -1
+}
+
 function videoFilesModelToFormattedJSON (
   model: MVideo | MStreamingPlaylistVideo,
   baseUrlHttp: string,
@@ -183,7 +189,8 @@ function videoFilesModelToFormattedJSON (
 ): VideoFile[] {
   const video = extractVideo(model)
 
-  return videoFiles
+  return [ ...videoFiles ]
+    .sort(sortByResolutionDesc)
     .map(videoFile => {
       return {
         resolution: {
@@ -200,11 +207,6 @@ function videoFilesModelToFormattedJSON (
         metadataUrl: video.getVideoFileMetadataUrl(videoFile, baseUrlHttp)
       } as VideoFile
     })
-    .sort((a, b) => {
-      if (a.resolution.id < b.resolution.id) return 1
-      if (a.resolution.id === b.resolution.id) return 0
-      return -1
-    })
 }
 
 function addVideoFilesInAPAcc (
@@ -214,7 +216,9 @@ function addVideoFilesInAPAcc (
   baseUrlWs: string,
   files: MVideoFile[]
 ) {
-  for (const file of files) {
+  const sortedFiles = [ ...files ].sort(sortByResolutionDesc)
+
+  for (const file of sortedFiles) {
     acc.push({
       type: 'Link',
       mediaType: MIMETYPES.VIDEO.EXT_MIMETYPE[file.extname] as any,
@@ -323,10 +327,7 @@ function videoModelToActivityPubObject (video: MVideoAP): VideoTorrentObject {
     })
   }
 
-  // FIXME: remove and uncomment in PT 2.3
-  // Breaks compatibility with PT <= 2.1
-  // const icons = [ video.getMiniature(), video.getPreview() ]
-  const miniature = video.getMiniature()
+  const icons = [ video.getMiniature(), video.getPreview() ]
 
   return {
     type: 'Video' as 'Video',
@@ -348,23 +349,16 @@ function videoModelToActivityPubObject (video: MVideoAP): VideoTorrentObject {
     originallyPublishedAt: video.originallyPublishedAt ? video.originallyPublishedAt.toISOString() : null,
     updated: video.updatedAt.toISOString(),
     mediaType: 'text/markdown',
-    content: video.getTruncatedDescription(),
+    content: video.description,
     support: video.support,
     subtitleLanguage,
-    icon: {
+    icon: icons.map(i => ({
       type: 'Image',
-      url: miniature.getFileUrl(video),
+      url: i.getFileUrl(video),
       mediaType: 'image/jpeg',
-      width: miniature.width,
-      height: miniature.height
-    } as any,
-    // icon: icons.map(i => ({
-    //   type: 'Image',
-    //   url: i.getFileUrl(video),
-    //   mediaType: 'image/jpeg',
-    //   width: i.width,
-    //   height: i.height
-    // })),
+      width: i.width,
+      height: i.height
+    })),
     url,
     likes: getVideoLikesActivityPubUrl(video),
     dislikes: getVideoDislikesActivityPubUrl(video),