Fix video watch page responsive
authorChocobozzz <me@florianbigard.com>
Tue, 3 Apr 2018 16:06:58 +0000 (18:06 +0200)
committerChocobozzz <me@florianbigard.com>
Tue, 3 Apr 2018 16:06:58 +0000 (18:06 +0200)
client/src/app/videos/+video-watch/video-watch.component.html
client/src/app/videos/+video-watch/video-watch.component.scss
client/src/app/videos/+video-watch/video-watch.component.ts

index 0385fab7c1d9f5c3ad2fb0e2bc24a8071f5f6900..03f64bd12fdebd3be28c295a98a1d44ab1e000d9 100644 (file)
@@ -1,7 +1,6 @@
 <div class="row">
   <!-- We need the video container for videojs so we just hide it -->
-  <div [hidden]="videoNotFound" id="video-container">
-    <div id="video-element-wrapper"></div>
+  <div [hidden]="videoNotFound" id="video-element-wrapper">
   </div>
 
   <div *ngIf="videoNotFound" id="video-not-found">Video not found :'(</div>
index 109357b590b40d665831cd32a09bf9a3d11783da..03f960339063575cc409e9a203551ff57779119b 100644 (file)
@@ -1,7 +1,7 @@
 @import '_variables';
 @import '_mixins';
 
-#video-container {
+#video-element-wrapper {
   background-color: #000;
   display: flex;
   justify-content: center;
index 9563394dcd49e91731be8f8c629055818d73b05d..ed7892a015687327ef08bb807d7ab567ac60f050 100644 (file)
@@ -43,7 +43,6 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
   playerElement: HTMLVideoElement
   userRating: UserVideoRateType = null
   video: VideoDetails = null
-  videoPlayerLoaded = false
   videoNotFound = false
   descriptionLoading = false
 
@@ -56,7 +55,6 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
 
   private otherVideos: Video[] = []
   private paramsSub: Subscription
-  private videojsInstance: videojs.Player
 
   constructor (
     private elementRef: ElementRef,
@@ -96,7 +94,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
       )
 
     this.paramsSub = this.route.params.subscribe(routeParams => {
-      if (this.videoPlayerLoaded) {
+      if (this.player) {
         this.player.pause()
       }
 
@@ -116,10 +114,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
   }
 
   ngOnDestroy () {
-    // Remove player if it exists
-    if (this.videoPlayerLoaded === true) {
-      videojs(this.playerElement).dispose()
-    }
+    this.flushPlayer()
 
     // Unsubscribe subscriptions
     this.paramsSub.unsubscribe()
@@ -334,11 +329,8 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
       if (res === false) return this.redirectService.redirectToHomepage()
     }
 
-    // Player was already loaded, remove old videojs
-    if (this.videojsInstance) {
-      this.videojsInstance.dispose()
-      this.videojsInstance = undefined
-    }
+    // Flush old player if needed
+    this.flushPlayer()
 
     // Build video element, because videojs remove it on dispose
     const playerElementWrapper = this.elementRef.nativeElement.querySelector('#video-element-wrapper')
@@ -348,7 +340,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
 
     const videojsOptions = getVideojsOptions({
       autoplay: this.isAutoplay(),
-      inactivityTimeout: 4000,
+      inactivityTimeout: 2500,
       videoFiles: this.video.files,
       playerElement: this.playerElement,
       videoViewUrl: this.videoService.getVideoViewUrl(this.video.uuid),
@@ -358,11 +350,9 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
       poster: this.video.previewUrl
     })
 
-    this.videoPlayerLoaded = true
-
     const self = this
     this.zone.runOutsideAngular(() => {
-      self.videojsInstance = videojs(this.playerElement, videojsOptions, function () {
+      videojs(this.playerElement, videojsOptions, function () {
         self.player = this
         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
     return this.user.autoPlayVideo !== false
   }
+
+  private flushPlayer () {
+    // Remove player if it exists
+    if (this.player) {
+      this.player.dispose()
+      this.player = undefined
+    }
+  }
 }