diff --git a/client/src/app/shared/shared-share-modal/video-share.component.html b/client/src/app/shared/shared-share-modal/video-share.component.html
index e5cee1b2f..a0a593a24 100644
--- a/client/src/app/shared/shared-share-modal/video-share.component.html
+++ b/client/src/app/shared/shared-share-modal/video-share.component.html
@@ -216,10 +216,17 @@
>
+
+
+
+
@@ -232,7 +239,7 @@
diff --git a/client/src/app/shared/shared-share-modal/video-share.component.ts b/client/src/app/shared/shared-share-modal/video-share.component.ts
index d59f338c7..36a4d7520 100644
--- a/client/src/app/shared/shared-share-modal/video-share.component.ts
+++ b/client/src/app/shared/shared-share-modal/video-share.component.ts
@@ -1,5 +1,6 @@
import { Component, ElementRef, Input, ViewChild } from '@angular/core'
import { DomSanitizer, SafeHtml } from '@angular/platform-browser'
+import { ServerService } from '@app/core'
import { VideoDetails } from '@app/shared/shared-main'
import { VideoPlaylist } from '@app/shared/shared-video-playlist'
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
@@ -21,6 +22,8 @@ type Customizations = {
originUrl: boolean
autoplay: boolean
muted: boolean
+
+ embedP2P: boolean
title: boolean
warningTitle: boolean
controls: boolean
@@ -54,7 +57,8 @@ export class VideoShareComponent {
constructor (
private modalService: NgbModal,
- private sanitizer: DomSanitizer
+ private sanitizer: DomSanitizer,
+ private server: ServerService
) { }
show (currentVideoTimestamp?: number, currentPlaylistPosition?: number) {
@@ -78,6 +82,8 @@ export class VideoShareComponent {
autoplay: false,
muted: false,
+ embedP2P: this.server.getHTMLConfig().defaults.p2p.embed.enabled,
+
// Embed options
title: true,
warningTitle: true,
@@ -87,6 +93,11 @@ export class VideoShareComponent {
set: (target, prop, value) => {
target[prop] = value
+ if (prop === 'embedP2P') {
+ // Auto enabled warning title if P2P is enabled
+ this.customizations.warningTitle = value
+ }
+
this.updateEmbedCode()
return true
@@ -101,7 +112,7 @@ export class VideoShareComponent {
}
getVideoIframeCode () {
- const embedUrl = decorateVideoLink({ url: this.video.embedUrl, ...this.getVideoOptions() })
+ const embedUrl = decorateVideoLink({ url: this.video.embedUrl, ...this.getVideoOptions(true) })
return buildVideoOrPlaylistEmbed(embedUrl, this.video.name)
}
@@ -120,7 +131,7 @@ export class VideoShareComponent {
return decorateVideoLink({
url,
- ...this.getVideoOptions()
+ ...this.getVideoOptions(false)
})
}
@@ -165,7 +176,21 @@ export class VideoShareComponent {
}
}
- private getVideoOptions () {
+ private getVideoOptions (forEmbed: boolean) {
+ const embedOptions = forEmbed
+ ? {
+ title: this.customizations.title,
+ warningTitle: this.customizations.warningTitle,
+ controls: this.customizations.controls,
+ peertubeLink: this.customizations.peertubeLink,
+
+ // If using default value, we don't need to specify it
+ p2p: this.customizations.embedP2P === this.server.getHTMLConfig().defaults.p2p.embed.enabled
+ ? undefined
+ : this.customizations.embedP2P
+ }
+ : {}
+
return {
startTime: this.customizations.startAtCheckbox ? this.customizations.startAt : undefined,
stopTime: this.customizations.stopAtCheckbox ? this.customizations.stopAt : undefined,
@@ -176,10 +201,7 @@ export class VideoShareComponent {
autoplay: this.customizations.autoplay,
muted: this.customizations.muted,
- title: this.customizations.title,
- warningTitle: this.customizations.warningTitle,
- controls: this.customizations.controls,
- peertubeLink: this.customizations.peertubeLink
+ ...embedOptions
}
}
}
diff --git a/client/src/assets/player/stats/stats-card.ts b/client/src/assets/player/stats/stats-card.ts
index 55d850eda..e76a81a74 100644
--- a/client/src/assets/player/stats/stats-card.ts
+++ b/client/src/assets/player/stats/stats-card.ts
@@ -34,7 +34,6 @@ class StatsCard extends Component {
updateInterval: any
mode: 'webtorrent' | 'p2p-media-loader'
- p2pEnabled: boolean
metadataStore: any = {}
@@ -211,7 +210,7 @@ class StatsCard extends Component {
return `
${this.buildElement(player.localize('Player mode'), this.mode || 'HTTP')}
- ${this.buildElement(player.localize('P2P'), player.localize(this.p2pEnabled ? 'enabled' : 'disabled'))}
+ ${this.buildElement(player.localize('P2P'), player.localize(this.options_.p2pEnabled ? 'enabled' : 'disabled'))}
${this.buildElement(player.localize('Video UUID'), this.options_.videoUUID)}
diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts
index c04f94d20..eb8076b98 100644
--- a/client/src/standalone/videos/embed.ts
+++ b/client/src/standalone/videos/embed.ts
@@ -45,6 +45,7 @@ export class PeerTubeEmbed {
title: boolean
warningTitle: boolean
peertubeLink: boolean
+ p2pEnabled: boolean
bigPlayBackgroundColor: string
foregroundColor: string
@@ -284,6 +285,7 @@ export class PeerTubeEmbed {
this.enableApi = this.getParamToggle(params, 'api', this.enableApi)
this.warningTitle = this.getParamToggle(params, 'warningTitle', true)
this.peertubeLink = this.getParamToggle(params, 'peertubeLink', true)
+ this.p2pEnabled = this.getParamToggle(params, 'p2p', this.isP2PEnabled(video))
this.scope = this.getParamString(params, 'scope', this.scope)
this.subtitle = this.getParamString(params, 'subtitle')
@@ -518,7 +520,7 @@ export class PeerTubeEmbed {
muted: this.muted,
loop: this.loop,
- p2pEnabled: this.isP2PEnabled(videoInfo),
+ p2pEnabled: this.p2pEnabled,
captions: videoCaptions.length !== 0,
subtitle: this.subtitle,
@@ -674,7 +676,7 @@ export class PeerTubeEmbed {
const title = this.title ? videoInfo.name : undefined
- const description = this.warningTitle && this.isP2PEnabled(videoInfo)
+ const description = this.warningTitle && this.p2pEnabled
? '' + peertubeTranslate('Watching this video may reveal your IP address to others.') + ''
: undefined
diff --git a/shared/core-utils/common/url.ts b/shared/core-utils/common/url.ts
index 9c111cbcc..8020d9b28 100644
--- a/shared/core-utils/common/url.ts
+++ b/shared/core-utils/common/url.ts
@@ -50,6 +50,7 @@ function decorateVideoLink (options: {
warningTitle?: boolean
controls?: boolean
peertubeLink?: boolean
+ p2p?: boolean
}) {
const { url } = options
@@ -74,6 +75,7 @@ function decorateVideoLink (options: {
if (options.warningTitle === false) params.set('warningTitle', '0')
if (options.controls === false) params.set('controls', '0')
if (options.peertubeLink === false) params.set('peertubeLink', '0')
+ if (options.p2p !== undefined) params.set('p2p', options.p2p ? '1' : '0')
return buildUrl(url, params)
}