diff options
Diffstat (limited to 'client/src/app/videos/+video-watch')
-rw-r--r-- | client/src/app/videos/+video-watch/video-watch.component.html | 6 | ||||
-rw-r--r-- | client/src/app/videos/+video-watch/video-watch.component.ts | 17 |
2 files changed, 22 insertions, 1 deletions
diff --git a/client/src/app/videos/+video-watch/video-watch.component.html b/client/src/app/videos/+video-watch/video-watch.component.html index 6a02f630a..cd60c407f 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.html +++ b/client/src/app/videos/+video-watch/video-watch.component.html | |||
@@ -199,7 +199,11 @@ | |||
199 | <my-video-comments [video]="video" [user]="user"></my-video-comments> | 199 | <my-video-comments [video]="video" [user]="user"></my-video-comments> |
200 | </div> | 200 | </div> |
201 | 201 | ||
202 | <my-recommended-videos [inputRecommendation]="{ uuid: video.uuid, tags: video.tags }" [user]="user"></my-recommended-videos> | 202 | <my-recommended-videos |
203 | [inputRecommendation]="{ uuid: video.uuid, tags: video.tags }" | ||
204 | [user]="user" | ||
205 | (gotRecommendations)="onRecommendations($event)" | ||
206 | ></my-recommended-videos> | ||
203 | </div> | 207 | </div> |
204 | 208 | ||
205 | <div class="row privacy-concerns" *ngIf="hasAlreadyAcceptedPrivacyConcern === false"> | 209 | <div class="row privacy-concerns" *ngIf="hasAlreadyAcceptedPrivacyConcern === false"> |
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 21a24113f..1e7991738 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.ts +++ b/client/src/app/videos/+video-watch/video-watch.component.ts | |||
@@ -35,6 +35,7 @@ import { getStoredTheater } from '../../../assets/player/peertube-player-local-s | |||
35 | import { PluginService } from '@app/core/plugins/plugin.service' | 35 | import { PluginService } from '@app/core/plugins/plugin.service' |
36 | import { HooksService } from '@app/core/plugins/hooks.service' | 36 | import { HooksService } from '@app/core/plugins/hooks.service' |
37 | import { PlatformLocation } from '@angular/common' | 37 | import { PlatformLocation } from '@angular/common' |
38 | import { randomInt } from '@shared/core-utils/miscs/miscs' | ||
38 | 39 | ||
39 | @Component({ | 40 | @Component({ |
40 | selector: 'my-video-watch', | 41 | selector: 'my-video-watch', |
@@ -69,6 +70,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
69 | remoteServerDown = false | 70 | remoteServerDown = false |
70 | hotkeys: Hotkey[] | 71 | hotkeys: Hotkey[] |
71 | 72 | ||
73 | private nextVideoUuid = '' | ||
72 | private currentTime: number | 74 | private currentTime: number |
73 | private paramsSub: Subscription | 75 | private paramsSub: Subscription |
74 | private queryParamsSub: Subscription | 76 | private queryParamsSub: Subscription |
@@ -217,6 +219,13 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
217 | return this.video.tags | 219 | return this.video.tags |
218 | } | 220 | } |
219 | 221 | ||
222 | onRecommendations (videos: Video[]) { | ||
223 | if (videos.length > 0) { | ||
224 | // Pick a random video until the recommendations are improved | ||
225 | this.nextVideoUuid = videos[randomInt(0,videos.length - 1)].uuid | ||
226 | } | ||
227 | } | ||
228 | |||
220 | onVideoRemoved () { | 229 | onVideoRemoved () { |
221 | this.redirectService.redirectToHomepage() | 230 | this.redirectService.redirectToHomepage() |
222 | } | 231 | } |
@@ -477,6 +486,8 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
477 | this.player.one('ended', () => { | 486 | this.player.one('ended', () => { |
478 | if (this.playlist) { | 487 | if (this.playlist) { |
479 | this.zone.run(() => this.videoWatchPlaylist.navigateToNextPlaylistVideo()) | 488 | this.zone.run(() => this.videoWatchPlaylist.navigateToNextPlaylistVideo()) |
489 | } else if (this.user && this.user.autoPlayNextVideo) { | ||
490 | this.zone.run(() => this.autoplayNext()) | ||
480 | } | 491 | } |
481 | }) | 492 | }) |
482 | 493 | ||
@@ -500,6 +511,12 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
500 | this.hooks.runAction('action:video-watch.video.loaded', 'video-watch') | 511 | this.hooks.runAction('action:video-watch.video.loaded', 'video-watch') |
501 | } | 512 | } |
502 | 513 | ||
514 | private autoplayNext () { | ||
515 | if (this.nextVideoUuid) { | ||
516 | this.router.navigate([ '/videos/watch', this.nextVideoUuid ]) | ||
517 | } | ||
518 | } | ||
519 | |||
503 | private setRating (nextRating: UserVideoRateType) { | 520 | private setRating (nextRating: UserVideoRateType) { |
504 | const ratingMethods: { [id in UserVideoRateType]: (id: number) => Observable<any> } = { | 521 | const ratingMethods: { [id in UserVideoRateType]: (id: number) => Observable<any> } = { |
505 | like: this.videoService.setVideoLike, | 522 | like: this.videoService.setVideoLike, |