diff options
Diffstat (limited to 'client')
3 files changed, 34 insertions, 15 deletions
diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.ts b/client/src/app/videos/+video-watch/comment/video-comments.component.ts index 030dee9af..6025256de 100644 --- a/client/src/app/videos/+video-watch/comment/video-comments.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comments.component.ts | |||
@@ -1,4 +1,4 @@ | |||
1 | import { Component, Input, OnInit } from '@angular/core' | 1 | import { Component, Input, OnChanges, SimpleChanges } from '@angular/core' |
2 | import { ConfirmService } from '@app/core' | 2 | import { ConfirmService } from '@app/core' |
3 | import { NotificationsService } from 'angular2-notifications' | 3 | import { NotificationsService } from 'angular2-notifications' |
4 | import { VideoComment as VideoCommentInterface, VideoCommentThreadTree } from '../../../../../../shared/models/videos/video-comment.model' | 4 | import { VideoComment as VideoCommentInterface, VideoCommentThreadTree } from '../../../../../../shared/models/videos/video-comment.model' |
@@ -15,7 +15,7 @@ import { VideoCommentService } from './video-comment.service' | |||
15 | templateUrl: './video-comments.component.html', | 15 | templateUrl: './video-comments.component.html', |
16 | styleUrls: ['./video-comments.component.scss'] | 16 | styleUrls: ['./video-comments.component.scss'] |
17 | }) | 17 | }) |
18 | export class VideoCommentsComponent implements OnInit { | 18 | export class VideoCommentsComponent implements OnChanges { |
19 | @Input() video: VideoDetails | 19 | @Input() video: VideoDetails |
20 | @Input() user: User | 20 | @Input() user: User |
21 | 21 | ||
@@ -37,9 +37,9 @@ export class VideoCommentsComponent implements OnInit { | |||
37 | private videoCommentService: VideoCommentService | 37 | private videoCommentService: VideoCommentService |
38 | ) {} | 38 | ) {} |
39 | 39 | ||
40 | ngOnInit () { | 40 | ngOnChanges (changes: SimpleChanges) { |
41 | if (this.video.commentsEnabled === true) { | 41 | if (changes['video']) { |
42 | this.loadMoreComments() | 42 | this.loadVideoComments() |
43 | } | 43 | } |
44 | } | 44 | } |
45 | 45 | ||
@@ -152,4 +152,21 @@ export class VideoCommentsComponent implements OnInit { | |||
152 | this.deleteLocalCommentThread(commentChild, commentToDelete) | 152 | this.deleteLocalCommentThread(commentChild, commentToDelete) |
153 | } | 153 | } |
154 | } | 154 | } |
155 | |||
156 | private loadVideoComments () { | ||
157 | if (this.video.commentsEnabled === true) { | ||
158 | // Reset all our fields | ||
159 | this.comments = [] | ||
160 | this.threadComments = {} | ||
161 | this.threadLoading = {} | ||
162 | this.inReplyToCommentId = undefined | ||
163 | this.componentPagination = { | ||
164 | currentPage: 1, | ||
165 | itemsPerPage: 10, | ||
166 | totalItems: null | ||
167 | } | ||
168 | |||
169 | this.loadMoreComments() | ||
170 | } | ||
171 | } | ||
155 | } | 172 | } |
diff --git a/client/src/app/videos/+video-watch/video-watch.component.ts b/client/src/app/videos/+video-watch/video-watch.component.ts index 1c2317c52..c9bdd4dfc 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.ts +++ b/client/src/app/videos/+video-watch/video-watch.component.ts | |||
@@ -347,7 +347,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
347 | }) | 347 | }) |
348 | }) | 348 | }) |
349 | } else { | 349 | } else { |
350 | (this.player as any).setVideoFiles(this.video.files) | 350 | this.player.peertube().setVideoFiles(this.video.files) |
351 | } | 351 | } |
352 | 352 | ||
353 | this.setVideoDescriptionHTML() | 353 | this.setVideoDescriptionHTML() |
diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index 34c993f3c..0a7651a81 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts | |||
@@ -5,18 +5,20 @@ import * as WebTorrent from 'webtorrent' | |||
5 | import { VideoFile } from '../../../../shared/models/videos/video.model' | 5 | import { VideoFile } from '../../../../shared/models/videos/video.model' |
6 | import { renderVideo } from './video-renderer' | 6 | import { renderVideo } from './video-renderer' |
7 | 7 | ||
8 | declare module 'video.js' { | ||
9 | interface Player { | ||
10 | peertube (): PeerTubePlugin | ||
11 | } | ||
12 | } | ||
13 | |||
8 | interface VideoJSComponentInterface { | 14 | interface VideoJSComponentInterface { |
9 | _player: VideoJSPlayer | 15 | _player: videojs.Player |
10 | 16 | ||
11 | new (player: VideoJSPlayer, options?: any) | 17 | new (player: videojs.Player, options?: any) |
12 | 18 | ||
13 | registerComponent (name: string, obj: any) | 19 | registerComponent (name: string, obj: any) |
14 | } | 20 | } |
15 | 21 | ||
16 | interface VideoJSPlayer extends videojs.Player { | ||
17 | peertube (): PeerTubePlugin | ||
18 | } | ||
19 | |||
20 | type PeertubePluginOptions = { | 22 | type PeertubePluginOptions = { |
21 | videoFiles: VideoFile[] | 23 | videoFiles: VideoFile[] |
22 | playerElement: HTMLVideoElement | 24 | playerElement: HTMLVideoElement |
@@ -45,7 +47,7 @@ const webtorrent = new WebTorrent({ dht: false }) | |||
45 | const MenuItem: VideoJSComponentInterface = videojsUntyped.getComponent('MenuItem') | 47 | const MenuItem: VideoJSComponentInterface = videojsUntyped.getComponent('MenuItem') |
46 | class ResolutionMenuItem extends MenuItem { | 48 | class ResolutionMenuItem extends MenuItem { |
47 | 49 | ||
48 | constructor (player: VideoJSPlayer, options) { | 50 | constructor (player: videojs.Player, options) { |
49 | options.selectable = true | 51 | options.selectable = true |
50 | super(player, options) | 52 | super(player, options) |
51 | 53 | ||
@@ -64,7 +66,7 @@ const MenuButton: VideoJSComponentInterface = videojsUntyped.getComponent('MenuB | |||
64 | class ResolutionMenuButton extends MenuButton { | 66 | class ResolutionMenuButton extends MenuButton { |
65 | label: HTMLElement | 67 | label: HTMLElement |
66 | 68 | ||
67 | constructor (player: VideoJSPlayer, options) { | 69 | constructor (player: videojs.Player, options) { |
68 | options.label = 'Quality' | 70 | options.label = 'Quality' |
69 | super(player, options) | 71 | super(player, options) |
70 | 72 | ||
@@ -215,7 +217,7 @@ class PeerTubePlugin extends Plugin { | |||
215 | private videoFiles: VideoFile[] | 217 | private videoFiles: VideoFile[] |
216 | private torrent: WebTorrent.Torrent | 218 | private torrent: WebTorrent.Torrent |
217 | 219 | ||
218 | constructor (player: VideoJSPlayer, options: PeertubePluginOptions) { | 220 | constructor (player: videojs.Player, options: PeertubePluginOptions) { |
219 | super(player, options) | 221 | super(player, options) |
220 | 222 | ||
221 | this.videoFiles = options.videoFiles | 223 | this.videoFiles = options.videoFiles |