aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/shared/video/video.service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/app/shared/video/video.service.ts')
-rw-r--r--client/src/app/shared/video/video.service.ts50
1 files changed, 31 insertions, 19 deletions
diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts
index 3aaf14990..d66a1f809 100644
--- a/client/src/app/shared/video/video.service.ts
+++ b/client/src/app/shared/video/video.service.ts
@@ -39,8 +39,9 @@ export interface VideosProvider {
39 videoPagination: ComponentPaginationLight, 39 videoPagination: ComponentPaginationLight,
40 sort: VideoSortField, 40 sort: VideoSortField,
41 filter?: VideoFilter, 41 filter?: VideoFilter,
42 categoryOneOf?: number, 42 categoryOneOf?: number[],
43 languageOneOf?: string[] 43 languageOneOf?: string[]
44 nsfwPolicy: NSFWPolicyType
44 }): Observable<ResultList<Video>> 45 }): Observable<ResultList<Video>>
45} 46}
46 47
@@ -161,13 +162,18 @@ export class VideoService implements VideosProvider {
161 getVideoChannelVideos ( 162 getVideoChannelVideos (
162 videoChannel: VideoChannel, 163 videoChannel: VideoChannel,
163 videoPagination: ComponentPaginationLight, 164 videoPagination: ComponentPaginationLight,
164 sort: VideoSortField 165 sort: VideoSortField,
166 nsfwPolicy?: NSFWPolicyType
165 ): Observable<ResultList<Video>> { 167 ): Observable<ResultList<Video>> {
166 const pagination = this.restService.componentPaginationToRestPagination(videoPagination) 168 const pagination = this.restService.componentPaginationToRestPagination(videoPagination)
167 169
168 let params = new HttpParams() 170 let params = new HttpParams()
169 params = this.restService.addRestGetParams(params, pagination, sort) 171 params = this.restService.addRestGetParams(params, pagination, sort)
170 172
173 if (nsfwPolicy) {
174 params = params.set('nsfw', this.nsfwPolicyToParam(nsfwPolicy))
175 }
176
171 return this.authHttp 177 return this.authHttp
172 .get<ResultList<Video>>(VideoChannelService.BASE_VIDEO_CHANNEL_URL + videoChannel.nameWithHost + '/videos', { params }) 178 .get<ResultList<Video>>(VideoChannelService.BASE_VIDEO_CHANNEL_URL + videoChannel.nameWithHost + '/videos', { params })
173 .pipe( 179 .pipe(
@@ -201,12 +207,12 @@ export class VideoService implements VideosProvider {
201 videoPagination: ComponentPaginationLight, 207 videoPagination: ComponentPaginationLight,
202 sort: VideoSortField, 208 sort: VideoSortField,
203 filter?: VideoFilter, 209 filter?: VideoFilter,
204 categoryOneOf?: number, 210 categoryOneOf?: number[],
205 languageOneOf?: string[], 211 languageOneOf?: string[],
206 skipCount?: boolean, 212 skipCount?: boolean,
207 nsfw?: boolean 213 nsfwPolicy?: NSFWPolicyType
208 }): Observable<ResultList<Video>> { 214 }): Observable<ResultList<Video>> {
209 const { videoPagination, sort, filter, categoryOneOf, languageOneOf, skipCount, nsfw } = parameters 215 const { videoPagination, sort, filter, categoryOneOf, languageOneOf, skipCount, nsfwPolicy } = parameters
210 216
211 const pagination = this.restService.componentPaginationToRestPagination(videoPagination) 217 const pagination = this.restService.componentPaginationToRestPagination(videoPagination)
212 218
@@ -214,16 +220,10 @@ export class VideoService implements VideosProvider {
214 params = this.restService.addRestGetParams(params, pagination, sort) 220 params = this.restService.addRestGetParams(params, pagination, sort)
215 221
216 if (filter) params = params.set('filter', filter) 222 if (filter) params = params.set('filter', filter)
217 if (categoryOneOf) params = params.set('categoryOneOf', categoryOneOf + '')
218 if (skipCount) params = params.set('skipCount', skipCount + '') 223 if (skipCount) params = params.set('skipCount', skipCount + '')
219 224
220 if (nsfw) { 225 if (nsfwPolicy) {
221 params = params.set('nsfw', nsfw + '') 226 params = params.set('nsfw', this.nsfwPolicyToParam(nsfwPolicy))
222 } else {
223 const nsfwPolicy = this.authService.isLoggedIn()
224 ? this.authService.getUser().nsfwPolicy
225 : this.userService.getAnonymousUser().nsfwPolicy
226 if (this.nsfwPolicyToFilter(nsfwPolicy)) params.set('nsfw', 'false')
227 } 227 }
228 228
229 if (languageOneOf) { 229 if (languageOneOf) {
@@ -232,6 +232,12 @@ export class VideoService implements VideosProvider {
232 } 232 }
233 } 233 }
234 234
235 if (categoryOneOf) {
236 for (const c of categoryOneOf) {
237 params = params.append('categoryOneOf[]', c + '')
238 }
239 }
240
235 return this.authHttp 241 return this.authHttp
236 .get<ResultList<Video>>(VideoService.BASE_VIDEO_URL, { params }) 242 .get<ResultList<Video>>(VideoService.BASE_VIDEO_URL, { params })
237 .pipe( 243 .pipe(
@@ -268,12 +274,16 @@ export class VideoService implements VideosProvider {
268 return feeds 274 return feeds
269 } 275 }
270 276
271 getVideoFeedUrls (sort: VideoSortField, filter?: VideoFilter, categoryOneOf?: number) { 277 getVideoFeedUrls (sort: VideoSortField, filter?: VideoFilter, categoryOneOf?: number[]) {
272 let params = this.restService.addRestGetParams(new HttpParams(), undefined, sort) 278 let params = this.restService.addRestGetParams(new HttpParams(), undefined, sort)
273 279
274 if (filter) params = params.set('filter', filter) 280 if (filter) params = params.set('filter', filter)
275 281
276 if (categoryOneOf) params = params.set('categoryOneOf', categoryOneOf + '') 282 if (categoryOneOf) {
283 for (const c of categoryOneOf) {
284 params = params.append('categoryOneOf[]', c + '')
285 }
286 }
277 287
278 return this.buildBaseFeedUrls(params) 288 return this.buildBaseFeedUrls(params)
279 } 289 }
@@ -377,6 +387,12 @@ export class VideoService implements VideosProvider {
377 return base.filter(o => !!privacies.find(p => p.id === o.id)) 387 return base.filter(o => !!privacies.find(p => p.id === o.id))
378 } 388 }
379 389
390 nsfwPolicyToParam (nsfwPolicy: NSFWPolicyType) {
391 return nsfwPolicy === 'do_not_list'
392 ? 'false'
393 : 'both'
394 }
395
380 private setVideoRate (id: number, rateType: UserVideoRateType) { 396 private setVideoRate (id: number, rateType: UserVideoRateType) {
381 const url = VideoService.BASE_VIDEO_URL + id + '/rate' 397 const url = VideoService.BASE_VIDEO_URL + id + '/rate'
382 const body: UserVideoRateUpdate = { 398 const body: UserVideoRateUpdate = {
@@ -390,8 +406,4 @@ export class VideoService implements VideosProvider {
390 catchError(err => this.restExtractor.handleError(err)) 406 catchError(err => this.restExtractor.handleError(err))
391 ) 407 )
392 } 408 }
393
394 private nsfwPolicyToFilter (policy: NSFWPolicyType) {
395 return policy === 'do_not_list'
396 }
397} 409}