Fix video watch page responsive

pull/489/head
Chocobozzz 2018-04-03 18:06:58 +02:00
parent b891f9bc61
commit 09edde4084
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 16 additions and 19 deletions

View File

@ -1,7 +1,6 @@
<div class="row"> <div class="row">
<!-- We need the video container for videojs so we just hide it --> <!-- We need the video container for videojs so we just hide it -->
<div [hidden]="videoNotFound" id="video-container"> <div [hidden]="videoNotFound" id="video-element-wrapper">
<div id="video-element-wrapper"></div>
</div> </div>
<div *ngIf="videoNotFound" id="video-not-found">Video not found :'(</div> <div *ngIf="videoNotFound" id="video-not-found">Video not found :'(</div>

View File

@ -1,7 +1,7 @@
@import '_variables'; @import '_variables';
@import '_mixins'; @import '_mixins';
#video-container { #video-element-wrapper {
background-color: #000; background-color: #000;
display: flex; display: flex;
justify-content: center; justify-content: center;

View File

@ -43,7 +43,6 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
playerElement: HTMLVideoElement playerElement: HTMLVideoElement
userRating: UserVideoRateType = null userRating: UserVideoRateType = null
video: VideoDetails = null video: VideoDetails = null
videoPlayerLoaded = false
videoNotFound = false videoNotFound = false
descriptionLoading = false descriptionLoading = false
@ -56,7 +55,6 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
private otherVideos: Video[] = [] private otherVideos: Video[] = []
private paramsSub: Subscription private paramsSub: Subscription
private videojsInstance: videojs.Player
constructor ( constructor (
private elementRef: ElementRef, private elementRef: ElementRef,
@ -96,7 +94,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
) )
this.paramsSub = this.route.params.subscribe(routeParams => { this.paramsSub = this.route.params.subscribe(routeParams => {
if (this.videoPlayerLoaded) { if (this.player) {
this.player.pause() this.player.pause()
} }
@ -116,10 +114,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
} }
ngOnDestroy () { ngOnDestroy () {
// Remove player if it exists this.flushPlayer()
if (this.videoPlayerLoaded === true) {
videojs(this.playerElement).dispose()
}
// Unsubscribe subscriptions // Unsubscribe subscriptions
this.paramsSub.unsubscribe() this.paramsSub.unsubscribe()
@ -334,11 +329,8 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
if (res === false) return this.redirectService.redirectToHomepage() if (res === false) return this.redirectService.redirectToHomepage()
} }
// Player was already loaded, remove old videojs // Flush old player if needed
if (this.videojsInstance) { this.flushPlayer()
this.videojsInstance.dispose()
this.videojsInstance = undefined
}
// Build video element, because videojs remove it on dispose // Build video element, because videojs remove it on dispose
const playerElementWrapper = this.elementRef.nativeElement.querySelector('#video-element-wrapper') const playerElementWrapper = this.elementRef.nativeElement.querySelector('#video-element-wrapper')
@ -348,7 +340,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
const videojsOptions = getVideojsOptions({ const videojsOptions = getVideojsOptions({
autoplay: this.isAutoplay(), autoplay: this.isAutoplay(),
inactivityTimeout: 4000, inactivityTimeout: 2500,
videoFiles: this.video.files, videoFiles: this.video.files,
playerElement: this.playerElement, playerElement: this.playerElement,
videoViewUrl: this.videoService.getVideoViewUrl(this.video.uuid), videoViewUrl: this.videoService.getVideoViewUrl(this.video.uuid),
@ -358,11 +350,9 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
poster: this.video.previewUrl poster: this.video.previewUrl
}) })
this.videoPlayerLoaded = true
const self = this const self = this
this.zone.runOutsideAngular(() => { this.zone.runOutsideAngular(() => {
self.videojsInstance = videojs(this.playerElement, videojsOptions, function () { videojs(this.playerElement, videojsOptions, function () {
self.player = this self.player = this
this.on('customError', (event, data) => self.handleError(data.err)) this.on('customError', (event, data) => self.handleError(data.err))
}) })
@ -453,4 +443,12 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
// Be sure the autoPlay is set to false // Be sure the autoPlay is set to false
return this.user.autoPlayVideo !== false return this.user.autoPlayVideo !== false
} }
private flushPlayer () {
// Remove player if it exists
if (this.player) {
this.player.dispose()
this.player = undefined
}
}
} }