diff options
author | Chocobozzz <me@florianbigard.com> | 2023-02-15 11:32:08 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2023-02-15 11:32:08 +0100 |
commit | 6a7cea15271cf30c4b06c7981bff5201978337e8 (patch) | |
tree | 90fda9efcd412696be0f2da3597803ddc1afa4c2 /client/src | |
parent | e81d45b4cb6462029661a525315529b02261722d (diff) | |
download | PeerTube-6a7cea15271cf30c4b06c7981bff5201978337e8.tar.gz PeerTube-6a7cea15271cf30c4b06c7981bff5201978337e8.tar.zst PeerTube-6a7cea15271cf30c4b06c7981bff5201978337e8.zip |
Fix live update of autoplay next video
Diffstat (limited to 'client/src')
3 files changed, 22 insertions, 10 deletions
diff --git a/client/src/app/+videos/+video-watch/shared/recommendations/recommended-videos.component.html b/client/src/app/+videos/+video-watch/shared/recommendations/recommended-videos.component.html index 5ac801622..2bbe26c96 100644 --- a/client/src/app/+videos/+video-watch/shared/recommendations/recommended-videos.component.html +++ b/client/src/app/+videos/+video-watch/shared/recommendations/recommended-videos.component.html | |||
@@ -14,7 +14,7 @@ | |||
14 | <ng-container *ngFor="let video of (videos$ | async); let i = index; let length = count"> | 14 | <ng-container *ngFor="let video of (videos$ | async); let i = index; let length = count"> |
15 | <span i18n *ngIf="!playlist && i === 0 && length !== 0 && autoPlayNextVideo" class="title-page-next-video-label">Next video to be played</span> | 15 | <span i18n *ngIf="!playlist && i === 0 && length !== 0 && autoPlayNextVideo" class="title-page-next-video-label">Next video to be played</span> |
16 | <my-video-miniature | 16 | <my-video-miniature |
17 | [displayOptions]="displayOptions" [video]="video" [user]="userMiniature" [displayAsRow]="displayAsRow" | 17 | [displayOptions]="displayOptions" [video]="video" [user]="user" [displayAsRow]="displayAsRow" |
18 | (videoBlocked)="onVideoRemoved()" (videoRemoved)="onVideoRemoved()" (videoAccountMuted)="onVideoRemoved()" | 18 | (videoBlocked)="onVideoRemoved()" (videoRemoved)="onVideoRemoved()" (videoAccountMuted)="onVideoRemoved()" |
19 | actorImageSize="32" | 19 | actorImageSize="32" |
20 | > | 20 | > |
diff --git a/client/src/app/+videos/+video-watch/shared/recommendations/recommended-videos.component.ts b/client/src/app/+videos/+video-watch/shared/recommendations/recommended-videos.component.ts index 97f742499..426f5d622 100644 --- a/client/src/app/+videos/+video-watch/shared/recommendations/recommended-videos.component.ts +++ b/client/src/app/+videos/+video-watch/shared/recommendations/recommended-videos.component.ts | |||
@@ -1,5 +1,5 @@ | |||
1 | import { Observable } from 'rxjs' | 1 | import { Observable, startWith, Subscription, switchMap } from 'rxjs' |
2 | import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core' | 2 | import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output } from '@angular/core' |
3 | import { AuthService, Notifier, User, UserService } from '@app/core' | 3 | import { AuthService, Notifier, User, UserService } from '@app/core' |
4 | import { Video } from '@app/shared/shared-main' | 4 | import { Video } from '@app/shared/shared-main' |
5 | import { MiniatureDisplayOptions } from '@app/shared/shared-video-miniature' | 5 | import { MiniatureDisplayOptions } from '@app/shared/shared-video-miniature' |
@@ -12,7 +12,7 @@ import { RecommendedVideosStore } from './recommended-videos.store' | |||
12 | templateUrl: './recommended-videos.component.html', | 12 | templateUrl: './recommended-videos.component.html', |
13 | styleUrls: [ './recommended-videos.component.scss' ] | 13 | styleUrls: [ './recommended-videos.component.scss' ] |
14 | }) | 14 | }) |
15 | export class RecommendedVideosComponent implements OnInit, OnChanges { | 15 | export class RecommendedVideosComponent implements OnInit, OnChanges, OnDestroy { |
16 | @Input() inputRecommendation: RecommendationInfo | 16 | @Input() inputRecommendation: RecommendationInfo |
17 | @Input() playlist: VideoPlaylist | 17 | @Input() playlist: VideoPlaylist |
18 | @Input() displayAsRow: boolean | 18 | @Input() displayAsRow: boolean |
@@ -29,7 +29,9 @@ export class RecommendedVideosComponent implements OnInit, OnChanges { | |||
29 | avatar: true | 29 | avatar: true |
30 | } | 30 | } |
31 | 31 | ||
32 | userMiniature: User | 32 | user: User |
33 | |||
34 | private userSub: Subscription | ||
33 | 35 | ||
34 | readonly hasVideos$: Observable<boolean> | 36 | readonly hasVideos$: Observable<boolean> |
35 | readonly videos$: Observable<Video[]> | 37 | readonly videos$: Observable<Video[]> |
@@ -44,15 +46,20 @@ export class RecommendedVideosComponent implements OnInit, OnChanges { | |||
44 | this.hasVideos$ = this.store.hasRecommendations$ | 46 | this.hasVideos$ = this.store.hasRecommendations$ |
45 | this.videos$.subscribe(videos => this.gotRecommendations.emit(videos)) | 47 | this.videos$.subscribe(videos => this.gotRecommendations.emit(videos)) |
46 | 48 | ||
47 | this.userService.getAnonymousOrLoggedUser() | ||
48 | .subscribe(user => this.autoPlayNextVideo = user.autoPlayNextVideo) | ||
49 | |||
50 | this.autoPlayNextVideoTooltip = $localize`When active, the next video is automatically played after the current one.` | 49 | this.autoPlayNextVideoTooltip = $localize`When active, the next video is automatically played after the current one.` |
51 | } | 50 | } |
52 | 51 | ||
53 | ngOnInit () { | 52 | ngOnInit () { |
54 | this.userService.getAnonymousOrLoggedUser() | 53 | this.userSub = this.userService.listenAnonymousUpdate() |
55 | .subscribe(user => this.userMiniature = user) | 54 | .pipe( |
55 | startWith(true), | ||
56 | switchMap(() => this.userService.getAnonymousOrLoggedUser()) | ||
57 | ) | ||
58 | .subscribe(user => { | ||
59 | this.user = user | ||
60 | this.autoPlayNextVideo = user.autoPlayNextVideo | ||
61 | console.log(this.autoPlayNextVideo) | ||
62 | }) | ||
56 | } | 63 | } |
57 | 64 | ||
58 | ngOnChanges () { | 65 | ngOnChanges () { |
@@ -61,6 +68,10 @@ export class RecommendedVideosComponent implements OnInit, OnChanges { | |||
61 | } | 68 | } |
62 | } | 69 | } |
63 | 70 | ||
71 | ngOnDestroy(): void { | ||
72 | if (this.userSub) this.userSub.unsubscribe() | ||
73 | } | ||
74 | |||
64 | onVideoRemoved () { | 75 | onVideoRemoved () { |
65 | this.store.requestNewRecommendations(this.inputRecommendation) | 76 | this.store.requestNewRecommendations(this.inputRecommendation) |
66 | } | 77 | } |
diff --git a/client/src/app/core/users/user-local-storage.service.ts b/client/src/app/core/users/user-local-storage.service.ts index d5fd1e447..1e629249a 100644 --- a/client/src/app/core/users/user-local-storage.service.ts +++ b/client/src/app/core/users/user-local-storage.service.ts | |||
@@ -168,6 +168,7 @@ export class UserLocalStorageService { | |||
168 | UserLocalStorageKeys.NSFW_POLICY, | 168 | UserLocalStorageKeys.NSFW_POLICY, |
169 | UserLocalStorageKeys.P2P_ENABLED, | 169 | UserLocalStorageKeys.P2P_ENABLED, |
170 | UserLocalStorageKeys.AUTO_PLAY_VIDEO, | 170 | UserLocalStorageKeys.AUTO_PLAY_VIDEO, |
171 | UserLocalStorageKeys.AUTO_PLAY_NEXT_VIDEO, | ||
171 | UserLocalStorageKeys.AUTO_PLAY_VIDEO_PLAYLIST, | 172 | UserLocalStorageKeys.AUTO_PLAY_VIDEO_PLAYLIST, |
172 | UserLocalStorageKeys.THEME, | 173 | UserLocalStorageKeys.THEME, |
173 | UserLocalStorageKeys.VIDEO_LANGUAGES | 174 | UserLocalStorageKeys.VIDEO_LANGUAGES |