})
this.queryParamsSub = this.route.queryParams.subscribe(queryParams => {
- this.playlistPosition = queryParams[ 'playlistPosition' ]
+ // Handle the ?playlistPosition
+ const positionParam = queryParams[ 'playlistPosition' ] ?? 1
+
+ this.playlistPosition = positionParam === 'last'
+ ? -1 // Handle the "last" index
+ : parseInt(positionParam + '', 10)
+
+ if (isNaN(this.playlistPosition)) {
+ console.error(`playlistPosition query param '${positionParam}' was parsed as NaN, defaulting to 1.`)
+ this.playlistPosition = 1
+ }
+
this.videoWatchPlaylist.updatePlaylistIndex(this.playlistPosition)
const start = queryParams[ 'start' ]
this.player.one('ended', () => {
if (this.video.isLive) {
- this.video.state.id = VideoState.LIVE_ENDED
+ this.zone.run(() => this.video.state.id = VideoState.LIVE_ENDED)
}
})
}
// Only set this if we're in a playlist
- if (this.playlist) options.common.previousVideo = () => {
- this.zone.run(() => this.videoWatchPlaylist.navigateToPreviousPlaylistVideo())
+ if (this.playlist) {
+ options.common.previousVideo = () => {
+ this.zone.run(() => this.videoWatchPlaylist.navigateToPreviousPlaylistVideo())
+ }
}
let mode: PlayerMode