aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/videos/recommendations/recent-videos-recommendation.service.ts
diff options
context:
space:
mode:
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.ts58
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 @@
1import { Injectable, OnInit } from '@angular/core'
2import { RecommendationService } from '@app/videos/recommendations/recommendations.service'
3import { Video } from '@app/shared/video/video.model'
4import { RecommendationInfo } from '@app/shared/video/recommendation-info.model'
5import { VideoService } from '@app/shared/video/video.service'
6import { map, switchMap } from 'rxjs/operators'
7import { Observable, of } from 'rxjs' 1import { Observable, of } from 'rxjs'
8import { SearchService } from '@app/search/search.service' 2import { map, switchMap } from 'rxjs/operators'
9import { AdvancedSearch } from '@app/search/advanced-search.model' 3import { Injectable } from '@angular/core'
10import { ServerService } from '@app/core' 4import { ServerService } from '@app/core'
5import { AdvancedSearch } from '@app/search/advanced-search.model'
6import { SearchService } from '@app/search/search.service'
7import { UserService } from '@app/shared'
8import { RecommendationInfo } from '@app/shared/video/recommendation-info.model'
9import { Video } from '@app/shared/video/video.model'
10import { VideoService } from '@app/shared/video/video.service'
11import { RecommendationService } from '@app/videos/recommendations/recommendations.service'
11import { ServerConfig } from '@shared/models' 12import { ServerConfig } from '@shared/models'
12import { 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}