aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/videos/recommendations
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/app/videos/recommendations')
-rw-r--r--client/src/app/videos/recommendations/recent-videos-recommendation.service.ts10
-rw-r--r--client/src/app/videos/recommendations/recommendation-info.model.ts4
-rw-r--r--client/src/app/videos/recommendations/recommendations.module.ts19
-rw-r--r--client/src/app/videos/recommendations/recommendations.service.ts4
-rw-r--r--client/src/app/videos/recommendations/recommended-videos.component.ts15
-rw-r--r--client/src/app/videos/recommendations/recommended-videos.store.ts12
6 files changed, 34 insertions, 30 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 0abf938b7..a376453bf 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,13 @@
1import { Observable, of } from 'rxjs' 1import { Observable, of } from 'rxjs'
2import { map, switchMap } from 'rxjs/operators' 2import { map, switchMap } from 'rxjs/operators'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { ServerService } from '@app/core' 4import { ServerService, UserService } from '@app/core'
5import { AdvancedSearch } from '@app/search/advanced-search.model' 5import { AdvancedSearch } from '@app/search/advanced-search.model'
6import { SearchService } from '@app/search/search.service' 6import { SearchService } from '@app/search/search.service'
7import { UserService } from '@app/shared' 7import { Video, VideoService } from '@app/shared/shared-main'
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'
12import { ServerConfig } from '@shared/models' 8import { ServerConfig } from '@shared/models'
9import { RecommendationInfo } from './recommendation-info.model'
10import { RecommendationService } from './recommendations.service'
13 11
14/** 12/**
15 * Provides "recommendations" by providing the most recently uploaded videos. 13 * Provides "recommendations" by providing the most recently uploaded videos.
diff --git a/client/src/app/videos/recommendations/recommendation-info.model.ts b/client/src/app/videos/recommendations/recommendation-info.model.ts
new file mode 100644
index 000000000..0233563bb
--- /dev/null
+++ b/client/src/app/videos/recommendations/recommendation-info.model.ts
@@ -0,0 +1,4 @@
1export interface RecommendationInfo {
2 uuid: string
3 tags?: string[]
4}
diff --git a/client/src/app/videos/recommendations/recommendations.module.ts b/client/src/app/videos/recommendations/recommendations.module.ts
index 3e279cc29..03cc272ca 100644
--- a/client/src/app/videos/recommendations/recommendations.module.ts
+++ b/client/src/app/videos/recommendations/recommendations.module.ts
@@ -1,16 +1,21 @@
1import { NgModule } from '@angular/core'
2import { InputSwitchModule } from 'primeng/inputswitch' 1import { InputSwitchModule } from 'primeng/inputswitch'
3import { RecommendedVideosComponent } from '@app/videos/recommendations/recommended-videos.component'
4import { RecommendedVideosStore } from '@app/videos/recommendations/recommended-videos.store'
5import { CommonModule } from '@angular/common' 2import { CommonModule } from '@angular/common'
6import { SharedModule } from '@app/shared' 3import { NgModule } from '@angular/core'
7import { RecentVideosRecommendationService } from '@app/videos/recommendations/recent-videos-recommendation.service' 4import { SharedMainModule } from '@app/shared/shared-main'
5import { SharedVideoMiniatureModule } from '@app/shared/shared-video-miniature'
6import { SharedVideoPlaylistModule } from '@app/shared/shared-video-playlist'
7import { RecentVideosRecommendationService } from './recent-videos-recommendation.service'
8import { RecommendedVideosComponent } from './recommended-videos.component'
9import { RecommendedVideosStore } from './recommended-videos.store'
8 10
9@NgModule({ 11@NgModule({
10 imports: [ 12 imports: [
13 CommonModule,
11 InputSwitchModule, 14 InputSwitchModule,
12 SharedModule, 15
13 CommonModule 16 SharedMainModule,
17 SharedVideoPlaylistModule,
18 SharedVideoMiniatureModule
14 ], 19 ],
15 declarations: [ 20 declarations: [
16 RecommendedVideosComponent 21 RecommendedVideosComponent
diff --git a/client/src/app/videos/recommendations/recommendations.service.ts b/client/src/app/videos/recommendations/recommendations.service.ts
index a547e289d..1d79d35f6 100644
--- a/client/src/app/videos/recommendations/recommendations.service.ts
+++ b/client/src/app/videos/recommendations/recommendations.service.ts
@@ -1,6 +1,6 @@
1import { Video } from '@app/shared/video/video.model'
2import { RecommendationInfo } from '@app/shared/video/recommendation-info.model'
3import { Observable } from 'rxjs' 1import { Observable } from 'rxjs'
2import { Video } from '@app/shared/shared-main'
3import { RecommendationInfo } from './recommendation-info.model'
4 4
5export interface RecommendationService { 5export interface RecommendationService {
6 getRecommendations (recommendation: RecommendationInfo): Observable<Video[]> 6 getRecommendations (recommendation: RecommendationInfo): Observable<Video[]>
diff --git a/client/src/app/videos/recommendations/recommended-videos.component.ts b/client/src/app/videos/recommendations/recommended-videos.component.ts
index a6f3bce3d..016975341 100644
--- a/client/src/app/videos/recommendations/recommended-videos.component.ts
+++ b/client/src/app/videos/recommendations/recommended-videos.component.ts
@@ -1,15 +1,12 @@
1import { Observable } from 'rxjs' 1import { Observable } from 'rxjs'
2import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core' 2import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core'
3import { AuthService, Notifier } from '@app/core' 3import { AuthService, Notifier, SessionStorageService, User, UserService } from '@app/core'
4import { User } from '@app/shared' 4import { Video } from '@app/shared/shared-main'
5import { SessionStorageService } from '@app/shared/misc/storage.service' 5import { MiniatureDisplayOptions } from '@app/shared/shared-video-miniature'
6import { UserService } from '@app/shared/users/user.service' 6import { VideoPlaylist } from '@app/shared/shared-video-playlist'
7import { VideoPlaylist } from '@app/shared/video-playlist/video-playlist.model'
8import { RecommendationInfo } from '@app/shared/video/recommendation-info.model'
9import { MiniatureDisplayOptions } from '@app/shared/video/video-miniature.component'
10import { Video } from '@app/shared/video/video.model'
11import { RecommendedVideosStore } from '@app/videos/recommendations/recommended-videos.store'
12import { I18n } from '@ngx-translate/i18n-polyfill' 7import { I18n } from '@ngx-translate/i18n-polyfill'
8import { RecommendationInfo } from './recommendation-info.model'
9import { RecommendedVideosStore } from './recommended-videos.store'
13 10
14@Component({ 11@Component({
15 selector: 'my-recommended-videos', 12 selector: 'my-recommended-videos',
diff --git a/client/src/app/videos/recommendations/recommended-videos.store.ts b/client/src/app/videos/recommendations/recommended-videos.store.ts
index 858ec3a27..8c3fb6480 100644
--- a/client/src/app/videos/recommendations/recommended-videos.store.ts
+++ b/client/src/app/videos/recommendations/recommended-videos.store.ts
@@ -1,10 +1,10 @@
1import { Inject, Injectable } from '@angular/core'
2import { Observable, ReplaySubject } from 'rxjs' 1import { Observable, ReplaySubject } from 'rxjs'
3import { Video } from '@app/shared/video/video.model'
4import { RecommendationInfo } from '@app/shared/video/recommendation-info.model'
5import { RecentVideosRecommendationService } from '@app/videos/recommendations/recent-videos-recommendation.service'
6import { RecommendationService } from '@app/videos/recommendations/recommendations.service'
7import { map, shareReplay, switchMap, take } from 'rxjs/operators' 2import { map, shareReplay, switchMap, take } from 'rxjs/operators'
3import { Inject, Injectable } from '@angular/core'
4import { Video } from '@app/shared/shared-main'
5import { RecentVideosRecommendationService } from './recent-videos-recommendation.service'
6import { RecommendationInfo } from './recommendation-info.model'
7import { RecommendationService } from './recommendations.service'
8 8
9/** 9/**
10 * This store is intended to provide data for the RecommendedVideosComponent. 10 * This store is intended to provide data for the RecommendedVideosComponent.
@@ -20,7 +20,7 @@ export class RecommendedVideosStore {
20 ) { 20 ) {
21 this.recommendations$ = this.requestsForLoad$$.pipe( 21 this.recommendations$ = this.requestsForLoad$$.pipe(
22 switchMap(requestedRecommendation => { 22 switchMap(requestedRecommendation => {
23 return recommendations.getRecommendations(requestedRecommendation) 23 return this.recommendations.getRecommendations(requestedRecommendation)
24 .pipe(take(1)) 24 .pipe(take(1))
25 }), 25 }),
26 shareReplay() 26 shareReplay()