diff options
author | Chocobozzz <me@florianbigard.com> | 2019-07-31 15:57:32 +0200 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2019-08-01 09:11:04 +0200 |
commit | bfbd912886eba17b4aa9a40dcef2fddc685d85bf (patch) | |
tree | 85e0f22980210a8ccd0888eb5e1790b152074677 /client/src/app/shared/video-playlist/video-playlist-element-miniature.component.ts | |
parent | 85394ba22a07bde1dfccebf3f591a5d6dbe9df56 (diff) | |
download | PeerTube-bfbd912886eba17b4aa9a40dcef2fddc685d85bf.tar.gz PeerTube-bfbd912886eba17b4aa9a40dcef2fddc685d85bf.tar.zst PeerTube-bfbd912886eba17b4aa9a40dcef2fddc685d85bf.zip |
Fix broken playlist api
Diffstat (limited to 'client/src/app/shared/video-playlist/video-playlist-element-miniature.component.ts')
-rw-r--r-- | client/src/app/shared/video-playlist/video-playlist-element-miniature.component.ts | 61 |
1 files changed, 37 insertions, 24 deletions
diff --git a/client/src/app/shared/video-playlist/video-playlist-element-miniature.component.ts b/client/src/app/shared/video-playlist/video-playlist-element-miniature.component.ts index 62cf6536d..a8e5a4885 100644 --- a/client/src/app/shared/video-playlist/video-playlist-element-miniature.component.ts +++ b/client/src/app/shared/video-playlist/video-playlist-element-miniature.component.ts | |||
@@ -1,6 +1,6 @@ | |||
1 | import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core' | 1 | import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core' |
2 | import { Video } from '@app/shared/video/video.model' | 2 | import { Video } from '@app/shared/video/video.model' |
3 | import { VideoPlaylistElementUpdate } from '@shared/models' | 3 | import { VideoPlaylistElementType, VideoPlaylistElementUpdate } from '@shared/models' |
4 | import { AuthService, ConfirmService, Notifier, ServerService } from '@app/core' | 4 | import { AuthService, ConfirmService, Notifier, ServerService } from '@app/core' |
5 | import { ActivatedRoute } from '@angular/router' | 5 | import { ActivatedRoute } from '@angular/router' |
6 | import { I18n } from '@ngx-translate/i18n-polyfill' | 6 | import { I18n } from '@ngx-translate/i18n-polyfill' |
@@ -9,6 +9,7 @@ import { VideoPlaylistService } from '@app/shared/video-playlist/video-playlist. | |||
9 | import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap' | 9 | import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap' |
10 | import { VideoPlaylist } from '@app/shared/video-playlist/video-playlist.model' | 10 | import { VideoPlaylist } from '@app/shared/video-playlist/video-playlist.model' |
11 | import { secondsToTime } from '../../../assets/player/utils' | 11 | import { secondsToTime } from '../../../assets/player/utils' |
12 | import { VideoPlaylistElement } from '@app/shared/video-playlist/video-playlist-element.model' | ||
12 | 13 | ||
13 | @Component({ | 14 | @Component({ |
14 | selector: 'my-video-playlist-element-miniature', | 15 | selector: 'my-video-playlist-element-miniature', |
@@ -20,14 +21,14 @@ export class VideoPlaylistElementMiniatureComponent { | |||
20 | @ViewChild('moreDropdown', { static: false }) moreDropdown: NgbDropdown | 21 | @ViewChild('moreDropdown', { static: false }) moreDropdown: NgbDropdown |
21 | 22 | ||
22 | @Input() playlist: VideoPlaylist | 23 | @Input() playlist: VideoPlaylist |
23 | @Input() video: Video | 24 | @Input() playlistElement: VideoPlaylistElement |
24 | @Input() owned = false | 25 | @Input() owned = false |
25 | @Input() playing = false | 26 | @Input() playing = false |
26 | @Input() rowLink = false | 27 | @Input() rowLink = false |
27 | @Input() accountLink = true | 28 | @Input() accountLink = true |
28 | @Input() position: number | 29 | @Input() position: number // Keep this property because we're in the OnPush change detection strategy |
29 | 30 | ||
30 | @Output() elementRemoved = new EventEmitter<Video>() | 31 | @Output() elementRemoved = new EventEmitter<VideoPlaylistElement>() |
31 | 32 | ||
32 | displayTimestampOptions = false | 33 | displayTimestampOptions = false |
33 | 34 | ||
@@ -50,6 +51,18 @@ export class VideoPlaylistElementMiniatureComponent { | |||
50 | private cdr: ChangeDetectorRef | 51 | private cdr: ChangeDetectorRef |
51 | ) {} | 52 | ) {} |
52 | 53 | ||
54 | isUnavailable (e: VideoPlaylistElement) { | ||
55 | return e.type === VideoPlaylistElementType.UNAVAILABLE | ||
56 | } | ||
57 | |||
58 | isPrivate (e: VideoPlaylistElement) { | ||
59 | return e.type === VideoPlaylistElementType.PRIVATE | ||
60 | } | ||
61 | |||
62 | isDeleted (e: VideoPlaylistElement) { | ||
63 | return e.type === VideoPlaylistElementType.DELETED | ||
64 | } | ||
65 | |||
53 | buildRouterLink () { | 66 | buildRouterLink () { |
54 | if (!this.playlist) return null | 67 | if (!this.playlist) return null |
55 | 68 | ||
@@ -57,12 +70,12 @@ export class VideoPlaylistElementMiniatureComponent { | |||
57 | } | 70 | } |
58 | 71 | ||
59 | buildRouterQuery () { | 72 | buildRouterQuery () { |
60 | if (!this.video) return {} | 73 | if (!this.playlistElement || !this.playlistElement.video) return {} |
61 | 74 | ||
62 | return { | 75 | return { |
63 | videoId: this.video.uuid, | 76 | videoId: this.playlistElement.video.uuid, |
64 | start: this.video.playlistElement.startTimestamp, | 77 | start: this.playlistElement.startTimestamp, |
65 | stop: this.video.playlistElement.stopTimestamp | 78 | stop: this.playlistElement.stopTimestamp |
66 | } | 79 | } |
67 | } | 80 | } |
68 | 81 | ||
@@ -70,13 +83,13 @@ export class VideoPlaylistElementMiniatureComponent { | |||
70 | return video.isVideoNSFWForUser(this.authService.getUser(), this.serverService.getConfig()) | 83 | return video.isVideoNSFWForUser(this.authService.getUser(), this.serverService.getConfig()) |
71 | } | 84 | } |
72 | 85 | ||
73 | removeFromPlaylist (video: Video) { | 86 | removeFromPlaylist (playlistElement: VideoPlaylistElement) { |
74 | this.videoPlaylistService.removeVideoFromPlaylist(this.playlist.id, video.id) | 87 | this.videoPlaylistService.removeVideoFromPlaylist(this.playlist.id, playlistElement.id) |
75 | .subscribe( | 88 | .subscribe( |
76 | () => { | 89 | () => { |
77 | this.notifier.success(this.i18n('Video removed from {{name}}', { name: this.playlist.displayName })) | 90 | this.notifier.success(this.i18n('Video removed from {{name}}', { name: this.playlist.displayName })) |
78 | 91 | ||
79 | this.elementRemoved.emit(this.video) | 92 | this.elementRemoved.emit(playlistElement) |
80 | }, | 93 | }, |
81 | 94 | ||
82 | err => this.notifier.error(err.message) | 95 | err => this.notifier.error(err.message) |
@@ -85,19 +98,19 @@ export class VideoPlaylistElementMiniatureComponent { | |||
85 | this.moreDropdown.close() | 98 | this.moreDropdown.close() |
86 | } | 99 | } |
87 | 100 | ||
88 | updateTimestamps (video: Video) { | 101 | updateTimestamps (playlistElement: VideoPlaylistElement) { |
89 | const body: VideoPlaylistElementUpdate = {} | 102 | const body: VideoPlaylistElementUpdate = {} |
90 | 103 | ||
91 | body.startTimestamp = this.timestampOptions.startTimestampEnabled ? this.timestampOptions.startTimestamp : null | 104 | body.startTimestamp = this.timestampOptions.startTimestampEnabled ? this.timestampOptions.startTimestamp : null |
92 | body.stopTimestamp = this.timestampOptions.stopTimestampEnabled ? this.timestampOptions.stopTimestamp : null | 105 | body.stopTimestamp = this.timestampOptions.stopTimestampEnabled ? this.timestampOptions.stopTimestamp : null |
93 | 106 | ||
94 | this.videoPlaylistService.updateVideoOfPlaylist(this.playlist.id, video.id, body) | 107 | this.videoPlaylistService.updateVideoOfPlaylist(this.playlist.id, playlistElement.id, body) |
95 | .subscribe( | 108 | .subscribe( |
96 | () => { | 109 | () => { |
97 | this.notifier.success(this.i18n('Timestamps updated')) | 110 | this.notifier.success(this.i18n('Timestamps updated')) |
98 | 111 | ||
99 | video.playlistElement.startTimestamp = body.startTimestamp | 112 | playlistElement.startTimestamp = body.startTimestamp |
100 | video.playlistElement.stopTimestamp = body.stopTimestamp | 113 | playlistElement.stopTimestamp = body.stopTimestamp |
101 | 114 | ||
102 | this.cdr.detectChanges() | 115 | this.cdr.detectChanges() |
103 | }, | 116 | }, |
@@ -108,9 +121,9 @@ export class VideoPlaylistElementMiniatureComponent { | |||
108 | this.moreDropdown.close() | 121 | this.moreDropdown.close() |
109 | } | 122 | } |
110 | 123 | ||
111 | formatTimestamp (video: Video) { | 124 | formatTimestamp (playlistElement: VideoPlaylistElement) { |
112 | const start = video.playlistElement.startTimestamp | 125 | const start = playlistElement.startTimestamp |
113 | const stop = video.playlistElement.stopTimestamp | 126 | const stop = playlistElement.stopTimestamp |
114 | 127 | ||
115 | const startFormatted = secondsToTime(start, true, ':') | 128 | const startFormatted = secondsToTime(start, true, ':') |
116 | const stopFormatted = secondsToTime(stop, true, ':') | 129 | const stopFormatted = secondsToTime(stop, true, ':') |
@@ -127,7 +140,7 @@ export class VideoPlaylistElementMiniatureComponent { | |||
127 | this.displayTimestampOptions = false | 140 | this.displayTimestampOptions = false |
128 | } | 141 | } |
129 | 142 | ||
130 | toggleDisplayTimestampsOptions (event: Event, video: Video) { | 143 | toggleDisplayTimestampsOptions (event: Event, playlistElement: VideoPlaylistElement) { |
131 | event.preventDefault() | 144 | event.preventDefault() |
132 | 145 | ||
133 | this.displayTimestampOptions = !this.displayTimestampOptions | 146 | this.displayTimestampOptions = !this.displayTimestampOptions |
@@ -137,17 +150,17 @@ export class VideoPlaylistElementMiniatureComponent { | |||
137 | startTimestampEnabled: false, | 150 | startTimestampEnabled: false, |
138 | stopTimestampEnabled: false, | 151 | stopTimestampEnabled: false, |
139 | startTimestamp: 0, | 152 | startTimestamp: 0, |
140 | stopTimestamp: video.duration | 153 | stopTimestamp: playlistElement.video.duration |
141 | } | 154 | } |
142 | 155 | ||
143 | if (video.playlistElement.startTimestamp) { | 156 | if (playlistElement.startTimestamp) { |
144 | this.timestampOptions.startTimestampEnabled = true | 157 | this.timestampOptions.startTimestampEnabled = true |
145 | this.timestampOptions.startTimestamp = video.playlistElement.startTimestamp | 158 | this.timestampOptions.startTimestamp = playlistElement.startTimestamp |
146 | } | 159 | } |
147 | 160 | ||
148 | if (video.playlistElement.stopTimestamp) { | 161 | if (playlistElement.stopTimestamp) { |
149 | this.timestampOptions.stopTimestampEnabled = true | 162 | this.timestampOptions.stopTimestampEnabled = true |
150 | this.timestampOptions.stopTimestamp = video.playlistElement.stopTimestamp | 163 | this.timestampOptions.stopTimestamp = playlistElement.stopTimestamp |
151 | } | 164 | } |
152 | } | 165 | } |
153 | 166 | ||