]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/assets/player/shared/manager-options/manager-options-builder.ts
Don't fallback to HLS with private videos
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / shared / manager-options / manager-options-builder.ts
index 5dab1f7a9cce49c3112f8637c6d924fb0e8329a2..2d96c9410bf89e32ade6104d482ff1c9897a70a2 100644 (file)
@@ -2,7 +2,7 @@ import videojs from 'video.js'
 import { copyToClipboard } from '@root-helpers/utils'
 import { buildVideoOrPlaylistEmbed } from '@root-helpers/video'
 import { isIOS, isSafari } from '@root-helpers/web-browser'
-import { buildVideoLink, decorateVideoLink } from '@shared/core-utils'
+import { buildVideoLink, decorateVideoLink, pick } from '@shared/core-utils'
 import { isDefaultLocale } from '@shared/core-utils/i18n'
 import { VideoJSPluginOptions } from '../../types'
 import { CommonOptions, PeertubePlayerManagerOptions, PlayerMode } from '../../types/manager-options'
@@ -20,7 +20,7 @@ export class ManagerOptionsBuilder {
 
   }
 
-  getVideojsOptions (alreadyPlayed: boolean): videojs.PlayerOptions {
+  async getVideojsOptions (alreadyPlayed: boolean): Promise<videojs.PlayerOptions> {
     const commonOptions = this.options.common
 
     let autoplay = this.getAutoPlayValue(commonOptions.autoplay, alreadyPlayed)
@@ -32,14 +32,26 @@ export class ManagerOptionsBuilder {
       peertube: {
         mode: this.mode,
         autoplay, // Use peertube plugin autoplay because we could get the file by webtorrent
-        videoViewUrl: commonOptions.videoViewUrl,
-        videoDuration: commonOptions.videoDuration,
-        userWatching: commonOptions.userWatching,
-        subtitle: commonOptions.subtitle,
-        videoCaptions: commonOptions.videoCaptions,
-        stopTime: commonOptions.stopTime,
-        isLive: commonOptions.isLive,
-        videoUUID: commonOptions.videoUUID
+
+        ...pick(commonOptions, [
+          'videoViewUrl',
+          'authorizationHeader',
+          'startTime',
+          'videoDuration',
+          'subtitle',
+          'videoCaptions',
+          'stopTime',
+          'isLive',
+          'videoUUID'
+        ])
+      },
+      metrics: {
+        mode: this.mode,
+
+        ...pick(commonOptions, [
+          'metricsUrl',
+          'videoUUID'
+        ])
       }
     }
 
@@ -49,8 +61,10 @@ export class ManagerOptionsBuilder {
 
     if (this.mode === 'p2p-media-loader') {
       const hlsOptionsBuilder = new HLSOptionsBuilder(this.options, this.p2pMediaLoaderModule)
+      const options = await hlsOptionsBuilder.getPluginOptions()
 
-      Object.assign(plugins, hlsOptionsBuilder.getPluginOptions())
+      Object.assign(plugins, pick(options, [ 'hlsjs', 'p2pMediaLoader' ]))
+      Object.assign(html5, options.html5)
     } else if (this.mode === 'webtorrent') {
       const webtorrentOptionsBuilder = new WebTorrentOptionsBuilder(this.options, this.getAutoPlayValue(autoplay, alreadyPlayed))
 
@@ -136,7 +150,7 @@ export class ManagerOptionsBuilder {
           icon: 'code',
           label: player.localize('Copy embed code'),
           listener: () => {
-            copyToClipboard(buildVideoOrPlaylistEmbed(commonOptions.embedUrl, commonOptions.embedTitle))
+            copyToClipboard(buildVideoOrPlaylistEmbed({ embedUrl: commonOptions.embedUrl, embedTitle: commonOptions.embedTitle }))
           }
         }
       ]