aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--client/src/standalone/videos/embed.ts29
-rw-r--r--client/src/standalone/videos/shared/player-manager-options.ts6
-rw-r--r--support/doc/api/openapi.yaml6
3 files changed, 17 insertions, 24 deletions
diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts
index 5bb3b43c2..d268f4762 100644
--- a/client/src/standalone/videos/embed.ts
+++ b/client/src/standalone/videos/embed.ts
@@ -90,7 +90,7 @@ export class PeerTubeEmbed {
90 90
91 if (!videoId) return 91 if (!videoId) return
92 92
93 return this.loadVideoAndBuildPlayer({ uuid: videoId, forceAutoplay: false }) 93 return this.loadVideoAndBuildPlayer({ uuid: videoId, autoplayFromPreviousVideo: false, forceAutoplay: false })
94 } 94 }
95 95
96 private async initPlaylist () { 96 private async initPlaylist () {
@@ -147,7 +147,7 @@ export class PeerTubeEmbed {
147 147
148 this.playlistTracker.setCurrentElement(next) 148 this.playlistTracker.setCurrentElement(next)
149 149
150 return this.loadVideoAndBuildPlayer({ uuid: next.video.uuid, forceAutoplay: false }) 150 return this.loadVideoAndBuildPlayer({ uuid: next.video.uuid, autoplayFromPreviousVideo: true, forceAutoplay: false })
151 } 151 }
152 152
153 async playPreviousPlaylistVideo () { 153 async playPreviousPlaylistVideo () {
@@ -159,7 +159,7 @@ export class PeerTubeEmbed {
159 159
160 this.playlistTracker.setCurrentElement(previous) 160 this.playlistTracker.setCurrentElement(previous)
161 161
162 await this.loadVideoAndBuildPlayer({ uuid: previous.video.uuid, forceAutoplay: false }) 162 await this.loadVideoAndBuildPlayer({ uuid: previous.video.uuid, autoplayFromPreviousVideo: true, forceAutoplay: false })
163 } 163 }
164 164
165 getCurrentPlaylistPosition () { 165 getCurrentPlaylistPosition () {
@@ -170,14 +170,15 @@ export class PeerTubeEmbed {
170 170
171 private async loadVideoAndBuildPlayer (options: { 171 private async loadVideoAndBuildPlayer (options: {
172 uuid: string 172 uuid: string
173 autoplayFromPreviousVideo: boolean
173 forceAutoplay: boolean 174 forceAutoplay: boolean
174 }) { 175 }) {
175 const { uuid, forceAutoplay } = options 176 const { uuid, autoplayFromPreviousVideo, forceAutoplay } = options
176 177
177 try { 178 try {
178 const { videoResponse, captionsPromise } = await this.videoFetcher.loadVideo(uuid) 179 const { videoResponse, captionsPromise } = await this.videoFetcher.loadVideo(uuid)
179 180
180 return this.buildVideoPlayer({ videoResponse, captionsPromise, forceAutoplay }) 181 return this.buildVideoPlayer({ videoResponse, captionsPromise, autoplayFromPreviousVideo, forceAutoplay })
181 } catch (err) { 182 } catch (err) {
182 this.playerHTML.displayError(err.message, await this.translationsPromise) 183 this.playerHTML.displayError(err.message, await this.translationsPromise)
183 } 184 }
@@ -186,17 +187,18 @@ export class PeerTubeEmbed {
186 private async buildVideoPlayer (options: { 187 private async buildVideoPlayer (options: {
187 videoResponse: Response 188 videoResponse: Response
188 captionsPromise: Promise<Response> 189 captionsPromise: Promise<Response>
190 autoplayFromPreviousVideo: boolean
189 forceAutoplay: boolean 191 forceAutoplay: boolean
190 }) { 192 }) {
191 const { videoResponse, captionsPromise, forceAutoplay } = options 193 const { videoResponse, captionsPromise, autoplayFromPreviousVideo, forceAutoplay } = options
192 194
193 const alreadyHadPlayer = this.resetPlayerElement() 195 this.resetPlayerElement()
194 196
195 const videoInfoPromise = videoResponse.json() 197 const videoInfoPromise = videoResponse.json()
196 .then(async (videoInfo: VideoDetails) => { 198 .then(async (videoInfo: VideoDetails) => {
197 this.playerManagerOptions.loadParams(this.config, videoInfo) 199 this.playerManagerOptions.loadParams(this.config, videoInfo)
198 200
199 if (!alreadyHadPlayer && !this.playerManagerOptions.hasAutoplay()) { 201 if (!autoplayFromPreviousVideo && !this.playerManagerOptions.hasAutoplay()) {
200 this.playerHTML.buildPlaceholder(videoInfo) 202 this.playerHTML.buildPlaceholder(videoInfo)
201 } 203 }
202 const live = videoInfo.isLive 204 const live = videoInfo.isLive
@@ -224,14 +226,14 @@ export class PeerTubeEmbed {
224 const playerOptions = await this.playerManagerOptions.getPlayerOptions({ 226 const playerOptions = await this.playerManagerOptions.getPlayerOptions({
225 video, 227 video,
226 captionsResponse, 228 captionsResponse,
227 alreadyHadPlayer, 229 autoplayFromPreviousVideo,
228 translations, 230 translations,
229 serverConfig: this.config, 231 serverConfig: this.config,
230 232
231 authorizationHeader: () => this.http.getHeaderTokenValue(), 233 authorizationHeader: () => this.http.getHeaderTokenValue(),
232 videoFileToken: () => videoFileToken, 234 videoFileToken: () => videoFileToken,
233 235
234 onVideoUpdate: (uuid: string) => this.loadVideoAndBuildPlayer({ uuid, forceAutoplay: false }), 236 onVideoUpdate: (uuid: string) => this.loadVideoAndBuildPlayer({ uuid, autoplayFromPreviousVideo: true, forceAutoplay: false }),
235 237
236 playlistTracker: this.playlistTracker, 238 playlistTracker: this.playlistTracker,
237 playNextPlaylistVideo: () => this.playNextPlaylistVideo(), 239 playNextPlaylistVideo: () => this.playNextPlaylistVideo(),
@@ -277,7 +279,7 @@ export class PeerTubeEmbed {
277 video, 279 video,
278 onPublishedVideo: () => { 280 onPublishedVideo: () => {
279 this.liveManager.stopListeningForChanges(video) 281 this.liveManager.stopListeningForChanges(video)
280 this.loadVideoAndBuildPlayer({ uuid: video.uuid, forceAutoplay: true }) 282 this.loadVideoAndBuildPlayer({ uuid: video.uuid, autoplayFromPreviousVideo: false, forceAutoplay: true })
281 } 283 }
282 }) 284 })
283 285
@@ -294,12 +296,9 @@ export class PeerTubeEmbed {
294 } 296 }
295 297
296 private resetPlayerElement () { 298 private resetPlayerElement () {
297 let alreadyHadPlayer = false
298
299 if (this.player) { 299 if (this.player) {
300 this.player.dispose() 300 this.player.dispose()
301 this.player = undefined 301 this.player = undefined
302 alreadyHadPlayer = true
303 } 302 }
304 303
305 const playerElement = document.createElement('video') 304 const playerElement = document.createElement('video')
@@ -308,8 +307,6 @@ export class PeerTubeEmbed {
308 307
309 this.playerHTML.setPlayerElement(playerElement) 308 this.playerHTML.setPlayerElement(playerElement)
310 this.playerHTML.addPlayerElementToDOM() 309 this.playerHTML.addPlayerElementToDOM()
311
312 return alreadyHadPlayer
313 } 310 }
314 311
315 private async buildPlayerPlaylistUpnext () { 312 private async buildPlayerPlaylistUpnext () {
diff --git a/client/src/standalone/videos/shared/player-manager-options.ts b/client/src/standalone/videos/shared/player-manager-options.ts
index 9ec012369..b0bdb2dd9 100644
--- a/client/src/standalone/videos/shared/player-manager-options.ts
+++ b/client/src/standalone/videos/shared/player-manager-options.ts
@@ -162,7 +162,7 @@ export class PlayerManagerOptions {
162 162
163 serverConfig: HTMLServerConfig 163 serverConfig: HTMLServerConfig
164 164
165 alreadyHadPlayer: boolean 165 autoplayFromPreviousVideo: boolean
166 166
167 translations: Translations 167 translations: Translations
168 168
@@ -174,7 +174,7 @@ export class PlayerManagerOptions {
174 const { 174 const {
175 video, 175 video,
176 captionsResponse, 176 captionsResponse,
177 alreadyHadPlayer, 177 autoplayFromPreviousVideo,
178 videoFileToken, 178 videoFileToken,
179 translations, 179 translations,
180 forceAutoplay, 180 forceAutoplay,
@@ -189,7 +189,7 @@ export class PlayerManagerOptions {
189 const playerOptions: PeertubePlayerManagerOptions = { 189 const playerOptions: PeertubePlayerManagerOptions = {
190 common: { 190 common: {
191 // Autoplay in playlist mode 191 // Autoplay in playlist mode
192 autoplay: alreadyHadPlayer ? true : this.autoplay, 192 autoplay: autoplayFromPreviousVideo ? true : this.autoplay,
193 forceAutoplay, 193 forceAutoplay,
194 194
195 controls: this.controls, 195 controls: this.controls,
diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml
index c2f9d424e..bfa7235a2 100644
--- a/support/doc/api/openapi.yaml
+++ b/support/doc/api/openapi.yaml
@@ -8128,17 +8128,13 @@ components:
8128 NotificationSettingValue: 8128 NotificationSettingValue:
8129 type: integer 8129 type: integer
8130 description: > 8130 description: >
8131 Notification type 8131 Notification type. One of the following values, or a sum of multiple values:
8132 8132
8133 - `0` NONE 8133 - `0` NONE
8134 8134
8135 - `1` WEB 8135 - `1` WEB
8136 8136
8137 - `2` EMAIL 8137 - `2` EMAIL
8138 enum:
8139 - 0
8140 - 1
8141 - 2
8142 Notification: 8138 Notification:
8143 properties: 8139 properties:
8144 id: 8140 id: