diff options
Diffstat (limited to 'client/src/app/shared/video/video-thumbnail.component.ts')
-rw-r--r-- | client/src/app/shared/video/video-thumbnail.component.ts | 82 |
1 files changed, 80 insertions, 2 deletions
diff --git a/client/src/app/shared/video/video-thumbnail.component.ts b/client/src/app/shared/video/video-thumbnail.component.ts index fe65ade94..0f605e425 100644 --- a/client/src/app/shared/video/video-thumbnail.component.ts +++ b/client/src/app/shared/video/video-thumbnail.component.ts | |||
@@ -1,6 +1,14 @@ | |||
1 | import { Component, Input } from '@angular/core' | 1 | import { Component, Input, OnInit, ChangeDetectorRef } from '@angular/core' |
2 | import { Video } from './video.model' | 2 | import { Video } from './video.model' |
3 | import { ScreenService } from '@app/shared/misc/screen.service' | 3 | import { ScreenService } from '@app/shared/misc/screen.service' |
4 | import { AuthService, ThemeService } from '@app/core' | ||
5 | import { VideoPlaylistService } from '../video-playlist/video-playlist.service' | ||
6 | import { VideoPlaylistType } from '@shared/models' | ||
7 | import { forkJoin } from 'rxjs' | ||
8 | import { VideoPlaylistElement } from '@app/shared/video-playlist/video-playlist-element.model' | ||
9 | import { VideoPlaylist } from '../video-playlist/video-playlist.model' | ||
10 | import { VideoPlaylistElementCreate } from '../../../../../shared' | ||
11 | import { VideoExistInPlaylist } from '@shared/models/videos/playlist/video-exist-in-playlist.model' | ||
4 | 12 | ||
5 | @Component({ | 13 | @Component({ |
6 | selector: 'my-video-thumbnail', | 14 | selector: 'my-video-thumbnail', |
@@ -13,7 +21,44 @@ export class VideoThumbnailComponent { | |||
13 | @Input() routerLink: any[] | 21 | @Input() routerLink: any[] |
14 | @Input() queryParams: any[] | 22 | @Input() queryParams: any[] |
15 | 23 | ||
16 | constructor (private screenService: ScreenService) { | 24 | addToWatchLaterText = 'Add to watch later' |
25 | addedToWatchLaterText = 'Added to watch later' | ||
26 | addedToWatchLater: boolean | ||
27 | |||
28 | watchLaterPlaylist: any | ||
29 | |||
30 | constructor ( | ||
31 | private screenService: ScreenService, | ||
32 | private authService: AuthService, | ||
33 | private videoPlaylistService: VideoPlaylistService, | ||
34 | private cd: ChangeDetectorRef | ||
35 | ) {} | ||
36 | |||
37 | load () { | ||
38 | if (this.addedToWatchLater !== undefined) return | ||
39 | |||
40 | this.videoPlaylistService.doesVideoExistInPlaylist(this.video.id) | ||
41 | .subscribe( | ||
42 | existResult => { | ||
43 | for (const playlist of this.authService.getUser().specialPlaylists) { | ||
44 | const existingPlaylist = existResult[ this.video.id ].find(p => p.playlistId === playlist.id) | ||
45 | this.addedToWatchLater = !!existingPlaylist | ||
46 | |||
47 | if (existingPlaylist) { | ||
48 | this.watchLaterPlaylist = { | ||
49 | playlistId: existingPlaylist.playlistId, | ||
50 | playlistElementId: existingPlaylist.playlistElementId | ||
51 | } | ||
52 | } else { | ||
53 | this.watchLaterPlaylist = { | ||
54 | playlistId: playlist.id | ||
55 | } | ||
56 | } | ||
57 | |||
58 | this.cd.markForCheck() | ||
59 | } | ||
60 | } | ||
61 | ) | ||
17 | } | 62 | } |
18 | 63 | ||
19 | getImageUrl () { | 64 | getImageUrl () { |
@@ -39,4 +84,37 @@ export class VideoThumbnailComponent { | |||
39 | 84 | ||
40 | return [ '/videos/watch', this.video.uuid ] | 85 | return [ '/videos/watch', this.video.uuid ] |
41 | } | 86 | } |
87 | |||
88 | isUserLoggedIn () { | ||
89 | return this.authService.isLoggedIn() | ||
90 | } | ||
91 | |||
92 | addToWatchLater () { | ||
93 | if (this.addedToWatchLater === undefined) return | ||
94 | this.addedToWatchLater = true | ||
95 | |||
96 | this.videoPlaylistService.addVideoInPlaylist( | ||
97 | this.watchLaterPlaylist.playlistId, | ||
98 | { videoId: this.video.id } as VideoPlaylistElementCreate | ||
99 | ).subscribe( | ||
100 | res => { | ||
101 | this.addedToWatchLater = true | ||
102 | this.watchLaterPlaylist.playlistElementId = res.videoPlaylistElement.id | ||
103 | } | ||
104 | ) | ||
105 | } | ||
106 | |||
107 | removeFromWatchLater () { | ||
108 | if (this.addedToWatchLater === undefined) return | ||
109 | this.addedToWatchLater = false | ||
110 | |||
111 | this.videoPlaylistService.removeVideoFromPlaylist( | ||
112 | this.watchLaterPlaylist.playlistId, | ||
113 | this.watchLaterPlaylist.playlistElementId | ||
114 | ).subscribe( | ||
115 | _ => { | ||
116 | this.addedToWatchLater = false | ||
117 | } | ||
118 | ) | ||
119 | } | ||
42 | } | 120 | } |