diff options
author | Chocobozzz <me@florianbigard.com> | 2021-12-15 15:58:10 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2021-12-16 10:08:55 +0100 |
commit | a9bfa85d2cdf13670aaced740da5b493fbeddfce (patch) | |
tree | 3781c9218d4cc7786b6589365c0efbed2151703d /client/src/standalone/videos | |
parent | c77fdc605b3ccc1ab6890f889d8200fbe9372949 (diff) | |
download | PeerTube-a9bfa85d2cdf13670aaced740da5b493fbeddfce.tar.gz PeerTube-a9bfa85d2cdf13670aaced740da5b493fbeddfce.tar.zst PeerTube-a9bfa85d2cdf13670aaced740da5b493fbeddfce.zip |
Add ability for admins to set default p2p policy
Diffstat (limited to 'client/src/standalone/videos')
-rw-r--r-- | client/src/standalone/videos/embed.ts | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index 874be580d..94f1096b7 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts | |||
@@ -7,6 +7,7 @@ import { | |||
7 | OAuth2ErrorCode, | 7 | OAuth2ErrorCode, |
8 | ResultList, | 8 | ResultList, |
9 | UserRefreshToken, | 9 | UserRefreshToken, |
10 | Video, | ||
10 | VideoCaption, | 11 | VideoCaption, |
11 | VideoDetails, | 12 | VideoDetails, |
12 | VideoPlaylist, | 13 | VideoPlaylist, |
@@ -16,9 +17,11 @@ import { | |||
16 | import { P2PMediaLoaderOptions, PeertubePlayerManagerOptions, PlayerMode } from '../../assets/player/peertube-player-manager' | 17 | import { P2PMediaLoaderOptions, PeertubePlayerManagerOptions, PlayerMode } from '../../assets/player/peertube-player-manager' |
17 | import { VideoJSCaption } from '../../assets/player/peertube-videojs-typings' | 18 | import { VideoJSCaption } from '../../assets/player/peertube-videojs-typings' |
18 | import { TranslationsManager } from '../../assets/player/translations-manager' | 19 | import { TranslationsManager } from '../../assets/player/translations-manager' |
20 | import { isP2PEnabled } from '../../assets/player/utils' | ||
21 | import { getBoolOrDefault } from '../../root-helpers/local-storage-utils' | ||
19 | import { peertubeLocalStorage } from '../../root-helpers/peertube-web-storage' | 22 | import { peertubeLocalStorage } from '../../root-helpers/peertube-web-storage' |
20 | import { PluginsManager } from '../../root-helpers/plugins-manager' | 23 | import { PluginsManager } from '../../root-helpers/plugins-manager' |
21 | import { Tokens } from '../../root-helpers/users' | 24 | import { UserLocalStorageKeys, UserTokens } from '../../root-helpers/users' |
22 | import { objectToUrlEncoded } from '../../root-helpers/utils' | 25 | import { objectToUrlEncoded } from '../../root-helpers/utils' |
23 | import { RegisterClientHelpers } from '../../types/register-client-option.model' | 26 | import { RegisterClientHelpers } from '../../types/register-client-option.model' |
24 | import { PeerTubeEmbedApi } from './embed-api' | 27 | import { PeerTubeEmbedApi } from './embed-api' |
@@ -48,7 +51,7 @@ export class PeerTubeEmbed { | |||
48 | mode: PlayerMode | 51 | mode: PlayerMode |
49 | scope = 'peertube' | 52 | scope = 'peertube' |
50 | 53 | ||
51 | userTokens: Tokens | 54 | userTokens: UserTokens |
52 | headers = new Headers() | 55 | headers = new Headers() |
53 | LOCAL_STORAGE_OAUTH_CLIENT_KEYS = { | 56 | LOCAL_STORAGE_OAUTH_CLIENT_KEYS = { |
54 | CLIENT_ID: 'client_id', | 57 | CLIENT_ID: 'client_id', |
@@ -118,7 +121,7 @@ export class PeerTubeEmbed { | |||
118 | return res.json() | 121 | return res.json() |
119 | }).then((obj: UserRefreshToken & { code?: OAuth2ErrorCode }) => { | 122 | }).then((obj: UserRefreshToken & { code?: OAuth2ErrorCode }) => { |
120 | if (!obj || obj.code === OAuth2ErrorCode.INVALID_GRANT) { | 123 | if (!obj || obj.code === OAuth2ErrorCode.INVALID_GRANT) { |
121 | Tokens.flush() | 124 | UserTokens.flushLocalStorage(peertubeLocalStorage) |
122 | this.removeTokensFromHeaders() | 125 | this.removeTokensFromHeaders() |
123 | 126 | ||
124 | return resolve() | 127 | return resolve() |
@@ -126,7 +129,7 @@ export class PeerTubeEmbed { | |||
126 | 129 | ||
127 | this.userTokens.accessToken = obj.access_token | 130 | this.userTokens.accessToken = obj.access_token |
128 | this.userTokens.refreshToken = obj.refresh_token | 131 | this.userTokens.refreshToken = obj.refresh_token |
129 | this.userTokens.save() | 132 | UserTokens.saveToLocalStorage(peertubeLocalStorage, this.userTokens) |
130 | 133 | ||
131 | this.setHeadersFromTokens() | 134 | this.setHeadersFromTokens() |
132 | 135 | ||
@@ -138,7 +141,7 @@ export class PeerTubeEmbed { | |||
138 | 141 | ||
139 | return refreshingTokenPromise | 142 | return refreshingTokenPromise |
140 | .catch(() => { | 143 | .catch(() => { |
141 | Tokens.flush() | 144 | UserTokens.flushLocalStorage(peertubeLocalStorage) |
142 | 145 | ||
143 | this.removeTokensFromHeaders() | 146 | this.removeTokensFromHeaders() |
144 | }).then(() => fetch(url, { | 147 | }).then(() => fetch(url, { |
@@ -258,7 +261,7 @@ export class PeerTubeEmbed { | |||
258 | } | 261 | } |
259 | 262 | ||
260 | async init () { | 263 | async init () { |
261 | this.userTokens = Tokens.load() | 264 | this.userTokens = UserTokens.getUserTokens(peertubeLocalStorage) |
262 | await this.initCore() | 265 | await this.initCore() |
263 | } | 266 | } |
264 | 267 | ||
@@ -515,6 +518,8 @@ export class PeerTubeEmbed { | |||
515 | muted: this.muted, | 518 | muted: this.muted, |
516 | loop: this.loop, | 519 | loop: this.loop, |
517 | 520 | ||
521 | p2pEnabled: this.isP2PEnabled(videoInfo), | ||
522 | |||
518 | captions: videoCaptions.length !== 0, | 523 | captions: videoCaptions.length !== 0, |
519 | subtitle: this.subtitle, | 524 | subtitle: this.subtitle, |
520 | 525 | ||
@@ -669,7 +674,7 @@ export class PeerTubeEmbed { | |||
669 | 674 | ||
670 | const title = this.title ? videoInfo.name : undefined | 675 | const title = this.title ? videoInfo.name : undefined |
671 | 676 | ||
672 | const description = this.warningTitle && (!videoInfo.isLocal || this.config.tracker.enabled) | 677 | const description = this.warningTitle && this.isP2PEnabled(videoInfo) |
673 | ? '<span class="text">' + peertubeTranslate('Watching this video may reveal your IP address to others.') + '</span>' | 678 | ? '<span class="text">' + peertubeTranslate('Watching this video may reveal your IP address to others.') + '</span>' |
674 | : undefined | 679 | : undefined |
675 | 680 | ||
@@ -784,6 +789,15 @@ export class PeerTubeEmbed { | |||
784 | translate: (value: string) => Promise.resolve(peertubeTranslate(value, translations)) | 789 | translate: (value: string) => Promise.resolve(peertubeTranslate(value, translations)) |
785 | } | 790 | } |
786 | } | 791 | } |
792 | |||
793 | private isP2PEnabled (video: Video) { | ||
794 | const userP2PEnabled = getBoolOrDefault( | ||
795 | peertubeLocalStorage.getItem(UserLocalStorageKeys.P2P_ENABLED), | ||
796 | this.config.defaults.p2p.enabled | ||
797 | ) | ||
798 | |||
799 | return isP2PEnabled(video, this.config, userP2PEnabled) | ||
800 | } | ||
787 | } | 801 | } |
788 | 802 | ||
789 | PeerTubeEmbed.main() | 803 | PeerTubeEmbed.main() |