diff options
author | Chocobozzz <me@florianbigard.com> | 2020-06-16 11:00:35 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2020-06-16 11:26:46 +0200 |
commit | 5c20a45518c3afc40c9494cad4a78def92e5e288 (patch) | |
tree | d4f6894b37394f3a40e6c58d34012bc55c05f55e /client/src/app/videos/recommendations/recent-videos-recommendation.service.ts | |
parent | 64e0f8cf12c804a7a2fa582fd954f686cea9a45b (diff) | |
download | PeerTube-5c20a45518c3afc40c9494cad4a78def92e5e288.tar.gz PeerTube-5c20a45518c3afc40c9494cad4a78def92e5e288.tar.zst PeerTube-5c20a45518c3afc40c9494cad4a78def92e5e288.zip |
Fix anonymous nsfw policy
Diffstat (limited to 'client/src/app/videos/recommendations/recent-videos-recommendation.service.ts')
-rw-r--r-- | client/src/app/videos/recommendations/recent-videos-recommendation.service.ts | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/client/src/app/videos/recommendations/recent-videos-recommendation.service.ts b/client/src/app/videos/recommendations/recent-videos-recommendation.service.ts index f06c35f9a..0abf938b7 100644 --- a/client/src/app/videos/recommendations/recent-videos-recommendation.service.ts +++ b/client/src/app/videos/recommendations/recent-videos-recommendation.service.ts | |||
@@ -1,15 +1,15 @@ | |||
1 | import { Injectable, OnInit } from '@angular/core' | ||
2 | import { RecommendationService } from '@app/videos/recommendations/recommendations.service' | ||
3 | import { Video } from '@app/shared/video/video.model' | ||
4 | import { RecommendationInfo } from '@app/shared/video/recommendation-info.model' | ||
5 | import { VideoService } from '@app/shared/video/video.service' | ||
6 | import { map, switchMap } from 'rxjs/operators' | ||
7 | import { Observable, of } from 'rxjs' | 1 | import { Observable, of } from 'rxjs' |
8 | import { SearchService } from '@app/search/search.service' | 2 | import { map, switchMap } from 'rxjs/operators' |
9 | import { AdvancedSearch } from '@app/search/advanced-search.model' | 3 | import { Injectable } from '@angular/core' |
10 | import { ServerService } from '@app/core' | 4 | import { ServerService } from '@app/core' |
5 | import { AdvancedSearch } from '@app/search/advanced-search.model' | ||
6 | import { SearchService } from '@app/search/search.service' | ||
7 | import { UserService } from '@app/shared' | ||
8 | import { RecommendationInfo } from '@app/shared/video/recommendation-info.model' | ||
9 | import { Video } from '@app/shared/video/video.model' | ||
10 | import { VideoService } from '@app/shared/video/video.service' | ||
11 | import { RecommendationService } from '@app/videos/recommendations/recommendations.service' | ||
11 | import { ServerConfig } from '@shared/models' | 12 | import { ServerConfig } from '@shared/models' |
12 | import { truncate } from 'lodash' | ||
13 | 13 | ||
14 | /** | 14 | /** |
15 | * Provides "recommendations" by providing the most recently uploaded videos. | 15 | * Provides "recommendations" by providing the most recently uploaded videos. |
@@ -23,13 +23,14 @@ export class RecentVideosRecommendationService implements RecommendationService | |||
23 | constructor ( | 23 | constructor ( |
24 | private videos: VideoService, | 24 | private videos: VideoService, |
25 | private searchService: SearchService, | 25 | private searchService: SearchService, |
26 | private userService: UserService, | ||
26 | private serverService: ServerService | 27 | private serverService: ServerService |
27 | ) { | 28 | ) { |
28 | this.config = this.serverService.getTmpConfig() | 29 | this.config = this.serverService.getTmpConfig() |
29 | 30 | ||
30 | this.serverService.getConfig() | 31 | this.serverService.getConfig() |
31 | .subscribe(config => this.config = config) | 32 | .subscribe(config => this.config = config) |
32 | } | 33 | } |
33 | 34 | ||
34 | getRecommendations (recommendation: RecommendationInfo): Observable<Video[]> { | 35 | getRecommendations (recommendation: RecommendationInfo): Observable<Video[]> { |
35 | return this.fetchPage(1, recommendation) | 36 | return this.fetchPage(1, recommendation) |
@@ -55,20 +56,29 @@ export class RecentVideosRecommendationService implements RecommendationService | |||
55 | return defaultSubscription | 56 | return defaultSubscription |
56 | } | 57 | } |
57 | 58 | ||
58 | const params = { | 59 | return this.userService.getAnonymousOrLoggedUser() |
59 | search: '', | 60 | .pipe( |
60 | componentPagination: pagination, | 61 | map(user => { |
61 | advancedSearch: new AdvancedSearch({ tagsOneOf: recommendation.tags.join(','), sort: '-createdAt', searchTarget: 'local' }) | 62 | return { |
62 | } | 63 | search: '', |
63 | 64 | componentPagination: pagination, | |
64 | return this.searchService.searchVideos(params) | 65 | advancedSearch: new AdvancedSearch({ |
65 | .pipe( | 66 | tagsOneOf: recommendation.tags.join(','), |
66 | map(v => v.data), | 67 | sort: '-createdAt', |
67 | switchMap(videos => { | 68 | searchTarget: 'local', |
68 | if (videos.length <= 1) return defaultSubscription | 69 | nsfw: user.nsfwPolicy |
70 | ? this.videos.nsfwPolicyToParam(user.nsfwPolicy) | ||
71 | : undefined | ||
72 | }) | ||
73 | } | ||
74 | }), | ||
75 | switchMap(params => this.searchService.searchVideos(params)), | ||
76 | map(v => v.data), | ||
77 | switchMap(videos => { | ||
78 | if (videos.length <= 1) return defaultSubscription | ||
69 | 79 | ||
70 | return of(videos) | 80 | return of(videos) |
71 | }) | 81 | }) |
72 | ) | 82 | ) |
73 | } | 83 | } |
74 | } | 84 | } |