+
+ private setHeadersFromTokens () {
+ this.headers.set('Authorization', `${this.userTokens.tokenType} ${this.userTokens.accessToken}`)
+ }
+
+ private removeTokensFromHeaders () {
+ this.headers.delete('Authorization')
+ }
+
+ private getResourceId () {
+ const urlParts = window.location.pathname.split('/')
+ return urlParts[urlParts.length - 1]
+ }
+
+ private isPlaylistEmbed () {
+ return window.location.pathname.split('/')[1] === 'video-playlists'
+ }
+
+ private loadPlugins (translations?: { [ id: string ]: string }) {
+ this.pluginsManager = new PluginsManager({
+ peertubeHelpersFactory: _ => this.buildPeerTubeHelpers(translations)
+ })
+
+ this.pluginsManager.loadPluginsList(this.config)
+
+ return this.pluginsManager.ensurePluginsAreLoaded('embed')
+ }
+
+ private buildPeerTubeHelpers (translations?: { [ id: string ]: string }): RegisterClientHelpers {
+ const unimplemented = () => {
+ throw new Error('This helper is not implemented in embed.')
+ }
+
+ return {
+ getBaseStaticRoute: unimplemented,
+ getBaseRouterRoute: unimplemented,
+ getBasePluginClientPath: unimplemented,
+
+ getSettings: unimplemented,
+
+ isLoggedIn: unimplemented,
+ getAuthHeader: unimplemented,
+
+ notifier: {
+ info: unimplemented,
+ error: unimplemented,
+ success: unimplemented
+ },
+
+ showModal: unimplemented,
+
+ getServerConfig: unimplemented,
+
+ markdownRenderer: {
+ textMarkdownToHTML: unimplemented,
+ enhancedMarkdownToHTML: unimplemented
+ },
+
+ translate: (value: string) => Promise.resolve(peertubeTranslate(value, translations))
+ }
+ }
+
+ private isP2PEnabled (video: Video) {
+ const userP2PEnabled = getBoolOrDefault(
+ peertubeLocalStorage.getItem(UserLocalStorageKeys.P2P_ENABLED),
+ this.config.defaults.p2p.embed.enabled
+ )
+
+ return isP2PEnabled(video, this.config, userP2PEnabled)
+ }