X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fassets%2Fplayer%2Fshared%2Fmanager-options%2Fmanager-options-builder.ts;h=5d3ee4c4a2cd2477f9f45e619dc82f61cc72c45a;hb=6de076222aca7005371e01768171efdc62ed8018;hp=5dab1f7a9cce49c3112f8637c6d924fb0e8329a2;hpb=57d6503286b114fee61b5e4725825e2490dcac29;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/assets/player/shared/manager-options/manager-options-builder.ts b/client/src/assets/player/shared/manager-options/manager-options-builder.ts index 5dab1f7a9..5d3ee4c4a 100644 --- a/client/src/assets/player/shared/manager-options/manager-options-builder.ts +++ b/client/src/assets/player/shared/manager-options/manager-options-builder.ts @@ -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 { const commonOptions = this.options.common let autoplay = this.getAutoPlayValue(commonOptions.autoplay, alreadyPlayed) @@ -32,14 +32,27 @@ 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', + 'videoViewIntervalMs', + 'authorizationHeader', + 'startTime', + 'videoDuration', + 'subtitle', + 'videoCaptions', + 'stopTime', + 'isLive', + 'videoUUID' + ]) + }, + metrics: { + mode: this.mode, + + ...pick(commonOptions, [ + 'metricsUrl', + 'videoUUID' + ]) } } @@ -49,8 +62,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)) @@ -94,7 +109,7 @@ export class ManagerOptionsBuilder { return videojsOptions } - private getAutoPlayValue (autoplay: any, alreadyPlayed: boolean) { + private getAutoPlayValue (autoplay: videojs.Autoplay, alreadyPlayed: boolean) { if (autoplay !== true) return autoplay // On first play, disable autoplay to avoid issues @@ -103,7 +118,9 @@ export class ManagerOptionsBuilder { return alreadyPlayed ? 'play' : false } - return 'play' + return this.options.common.forceAutoplay + ? 'any' + : 'play' } getContextMenuOptions (player: videojs.Player, commonOptions: CommonOptions) { @@ -136,7 +153,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 })) } } ]