+ ngOnInit () {
+ this.paramsSub = this.route.params.subscribe(routeParams => {
+ let uuid = routeParams['uuid']
+ this.videoService.getVideo(uuid).subscribe(
+ video => this.onVideoFetched(video),
+
+ error => {
+ console.error(error)
+ this.videoNotFound = true
+ }
+ )
+ })
+ }
+
+ ngOnDestroy () {
+ // Remove player if it exists
+ if (this.videoNotFound === false) {
+ videojs(this.playerElement).dispose()
+ }
+
+ // Unsubscribe subscriptions
+ this.paramsSub.unsubscribe()
+ }
+
+ setLike () {
+ if (this.isUserLoggedIn() === false) return
+ // Already liked this video
+ if (this.userRating === 'like') return
+
+ this.videoService.setVideoLike(this.video.id)
+ .subscribe(
+ () => {
+ // Update the video like attribute
+ this.updateVideoRating(this.userRating, 'like')
+ this.userRating = 'like'
+ },
+
+ err => this.notificationsService.error('Error', err.message)
+ )
+ }
+
+ setDislike () {
+ if (this.isUserLoggedIn() === false) return
+ // Already disliked this video
+ if (this.userRating === 'dislike') return
+
+ this.videoService.setVideoDislike(this.video.id)
+ .subscribe(
+ () => {
+ // Update the video dislike attribute
+ this.updateVideoRating(this.userRating, 'dislike')
+ this.userRating = 'dislike'
+ },
+
+ err => this.notificationsService.error('Error', err.message)
+ )
+ }
+
+ removeVideo (event: Event) {
+ event.preventDefault()
+
+ this.confirmService.confirm('Do you really want to delete this video?', 'Delete').subscribe(
+ res => {
+ if (res === false) return
+
+ this.videoService.removeVideo(this.video.id)
+ .subscribe(
+ status => {
+ this.notificationsService.success('Success', `Video ${this.video.name} deleted.`)
+ // Go back to the video-list.
+ this.router.navigate(['/videos/list'])
+ },
+
+ error => this.notificationsService.error('Error', error.text)
+ )
+ }
+ )
+ }
+
+ blacklistVideo (event: Event) {
+ event.preventDefault()
+
+ this.confirmService.confirm('Do you really want to blacklist this video ?', 'Blacklist').subscribe(
+ res => {
+ if (res === false) return
+
+ this.videoService.blacklistVideo(this.video.id)
+ .subscribe(
+ status => {
+ this.notificationsService.success('Success', `Video ${this.video.name} had been blacklisted.`)
+ this.router.navigate(['/videos/list'])
+ },
+
+ error => this.notificationsService.error('Error', error.text)
+ )
+ }
+ )
+ }
+
+ showReportModal (event: Event) {
+ event.preventDefault()
+ this.videoReportModal.show()
+ }
+
+ showShareModal () {
+ this.videoShareModal.show()
+ }
+
+ showMagnetUriModal (event: Event) {
+ event.preventDefault()
+ this.videoMagnetModal.show()
+ }
+
+ isUserLoggedIn () {
+ return this.authService.isLoggedIn()
+ }