mirror of https://github.com/Chocobozzz/PeerTube
Fix video watch page responsive
parent
b891f9bc61
commit
09edde4084
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue