X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fstandalone%2Fvideos%2Fembed.ts;h=9e5b2a655ecae253d39cd074f0565cf777dda302;hb=e8bb5b6b3a1e4c2aeab368f01cc5092d8478b893;hp=af98a1561d1bce848888a993008418975d7eeb82;hpb=0cd6ffc09cd76951fea3d861a6bda7f5984cb9d2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index af98a1561..9e5b2a655 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts @@ -13,6 +13,7 @@ import { PluginType, ClientHookName } from '../../../../shared/models' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' import { P2PMediaLoaderOptions, PeertubePlayerManagerOptions, PlayerMode } from '../../assets/player/peertube-player-manager' import { VideoJSCaption } from '../../assets/player/peertube-videojs-typings' import { TranslationsManager } from '../../assets/player/translations-manager' @@ -85,9 +86,9 @@ export class PeerTubeEmbed { refreshFetch (url: string, options?: RequestInit) { return fetch(url, options) .then((res: Response) => { - if (res.status !== 401) return res + if (res.status !== HttpStatusCode.UNAUTHORIZED_401) return res - const refreshingTokenPromise = new Promise((resolve, reject) => { + const refreshingTokenPromise = new Promise((resolve, reject) => { const clientId: string = peertubeLocalStorage.getItem(this.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_ID) const clientSecret: string = peertubeLocalStorage.getItem(this.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_SECRET) @@ -107,7 +108,7 @@ export class PeerTubeEmbed { method: 'POST', body: objectToUrlEncoded(data) }).then(res => { - if (res.status === 401) return undefined + if (res.status === HttpStatusCode.UNAUTHORIZED_401) return undefined return res.json() }).then((obj: UserRefreshToken & { code: 'invalid_grant'}) => { @@ -125,10 +126,9 @@ export class PeerTubeEmbed { this.setHeadersFromTokens() resolve() + }).catch((refreshTokenError: any) => { + reject(refreshTokenError) }) - .catch((refreshTokenError: any) => { - reject(refreshTokenError) - }) }) return refreshingTokenPromise @@ -339,7 +339,7 @@ export class PeerTubeEmbed { try { playlistResponse = await playlistPromise - isResponseOk = true + isResponseOk = playlistResponse.status === HttpStatusCode.OK_200 } catch (err) { console.error(err) isResponseOk = false @@ -348,7 +348,7 @@ export class PeerTubeEmbed { if (!isResponseOk) { const serverTranslations = await this.translationsPromise - if (playlistResponse?.status === 404) { + if (playlistResponse?.status === HttpStatusCode.NOT_FOUND_404) { this.playlistNotFound(serverTranslations) return undefined } @@ -368,7 +368,7 @@ export class PeerTubeEmbed { try { videoResponse = await videoPromise - isResponseOk = true + isResponseOk = videoResponse.status === HttpStatusCode.OK_200 } catch (err) { console.error(err) @@ -378,7 +378,7 @@ export class PeerTubeEmbed { if (!isResponseOk) { const serverTranslations = await this.translationsPromise - if (videoResponse?.status === 404) { + if (videoResponse?.status === HttpStatusCode.NOT_FOUND_404) { this.videoNotFound(serverTranslations) return undefined } @@ -492,6 +492,8 @@ export class PeerTubeEmbed { const playlistPlugin = this.currentPlaylistElement ? { + createComponent: true, + elements: this.playlistElements, playlist: this.playlist, @@ -502,7 +504,10 @@ export class PeerTubeEmbed { this.loadVideoAndBuildPlayer(this.currentPlaylistElement.video.uuid) .catch(err => console.error(err)) - } + }, + + embedTitle: this.playlist.displayName, + embedUrl: window.location.origin + this.playlist.embedPath } : undefined @@ -531,6 +536,9 @@ export class PeerTubeEmbed { videoCaptions, inactivityTimeout: 2500, videoViewUrl: this.getVideoUrl(videoInfo.uuid) + '/views', + videoUUID: videoInfo.uuid, + + isLive: videoInfo.isLive, playerElement: this.playerElement, onPlayerElementChange: (element: HTMLVideoElement) => this.playerElement = element, @@ -543,7 +551,8 @@ export class PeerTubeEmbed { serverUrl: window.location.origin, language: navigator.language, - embedUrl: window.location.origin + videoInfo.embedPath + embedUrl: window.location.origin + videoInfo.embedPath, + embedTitle: videoInfo.name }, webtorrent: { @@ -588,7 +597,7 @@ export class PeerTubeEmbed { }) } - this.runHook('action:embed.player.loaded', undefined, { player: this.player, videojs }) + this.runHook('action:embed.player.loaded', undefined, { player: this.player, videojs, video: videoInfo }) } private async initCore () { @@ -661,10 +670,12 @@ export class PeerTubeEmbed { ? '' + peertubeTranslate('Watching this video may reveal your IP address to others.') + '' : undefined - this.player.dock({ - title, - description - }) + if (title || description) { + this.player.dock({ + title, + description + }) + } } private buildCSS () { @@ -753,6 +764,7 @@ export class PeerTubeEmbed { await loadPlugin({ hooks: this.peertubeHooks, pluginInfo, + onSettingsScripts: () => undefined, peertubeHelpersFactory: _ => this.buildPeerTubeHelpers(translations) }) } @@ -779,6 +791,8 @@ export class PeerTubeEmbed { showModal: unimplemented, + getServerConfig: unimplemented, + markdownRenderer: { textMarkdownToHTML: unimplemented, enhancedMarkdownToHTML: unimplemented