X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-main%2Fvideo%2Fvideo.service.ts;h=78a49567f91746d77845efa035a2f5753ca34404;hb=cb0eda5602a21d1626a7face32de6153ed07b5f9;hp=7810c4303c879ed53ee2ebf86112110969557f2a;hpb=e722fb5923ddf11d72e48cec9788abc64327c22f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-main/video/video.service.ts b/client/src/app/shared/shared-main/video/video.service.ts index 7810c4303..78a49567f 100644 --- a/client/src/app/shared/shared-main/video/video.service.ts +++ b/client/src/app/shared/shared-main/video/video.service.ts @@ -5,6 +5,7 @@ import { HttpClient, HttpParams, HttpRequest } from '@angular/common/http' import { Injectable } from '@angular/core' import { AuthService, ComponentPaginationLight, RestExtractor, RestService, ServerService, UserService } from '@app/core' import { objectToFormData } from '@app/helpers' +import { arrayify } from '@shared/core-utils' import { BooleanBothQuery, FeedFormat, @@ -53,6 +54,7 @@ export type CommonVideoParams = { export class VideoService { static BASE_VIDEO_URL = environment.apiUrl + '/api/v1/videos' static BASE_FEEDS_URL = environment.apiUrl + '/feeds/videos.' + static PODCAST_FEEDS_URL = environment.apiUrl + '/feeds/podcast/videos.xml' static BASE_SUBSCRIPTION_FEEDS_URL = environment.apiUrl + '/feeds/subscriptions.' constructor ( @@ -265,7 +267,15 @@ export class VideoService { let params = this.restService.addRestGetParams(new HttpParams()) params = params.set('videoChannelId', videoChannelId.toString()) - return this.buildBaseFeedUrls(params) + const feedUrls = this.buildBaseFeedUrls(params) + + feedUrls.push({ + format: FeedFormat.RSS, + label: 'podcast rss 2.0', + url: VideoService.PODCAST_FEEDS_URL + `?videoChannelId=${videoChannelId}` + }) + + return feedUrls } getVideoSubscriptionFeedUrls (accountId: number, feedToken: string) { @@ -285,7 +295,7 @@ export class VideoService { } removeVideo (idArg: number | number[]) { - const ids = Array.isArray(idArg) ? idArg : [ idArg ] + const ids = arrayify(idArg) return from(ids) .pipe( @@ -304,6 +314,11 @@ export class VideoService { ) } + removeFile (videoId: number | string, fileId: number, type: 'hls' | 'webtorrent') { + return this.authHttp.delete(VideoService.BASE_VIDEO_URL + '/' + videoId + '/' + type + '/' + fileId) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + runTranscoding (videoIds: (number | string)[], type: 'hls' | 'webtorrent') { const body: VideoTranscodingCreate = { transcodingType: type } @@ -414,6 +429,24 @@ export class VideoService { : 'both' } + // Choose if we display by default the account or the channel + buildDefaultOwnerDisplayType (video: Video) { + const accountName = video.account.name + + // If the video channel name is an UUID (not really displayable, we changed this behaviour in v1.0.0-beta.12) + // Or has not been customized (default created channel display name) + // -> Use the account name + if ( + video.channel.displayName === `Default ${accountName} channel` || + video.channel.displayName === `Main ${accountName} channel` || + video.channel.name.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/) + ) { + return 'account' as 'account' + } + + return 'videoChannel' as 'videoChannel' + } + buildCommonVideosParams (options: CommonVideoParams & { params: HttpParams }) { const { params, @@ -438,14 +471,14 @@ export class VideoService { if (skipCount) newParams = newParams.set('skipCount', skipCount + '') - if (isLocal) newParams = newParams.set('isLocal', isLocal) - if (include) newParams = newParams.set('include', include) - if (isLive) newParams = newParams.set('isLive', isLive) - if (nsfw) newParams = newParams.set('nsfw', nsfw) - if (nsfwPolicy) newParams = newParams.set('nsfw', this.nsfwPolicyToParam(nsfwPolicy)) - if (languageOneOf) newParams = this.restService.addArrayParams(newParams, 'languageOneOf', languageOneOf) - if (categoryOneOf) newParams = this.restService.addArrayParams(newParams, 'categoryOneOf', categoryOneOf) - if (privacyOneOf) newParams = this.restService.addArrayParams(newParams, 'privacyOneOf', privacyOneOf) + if (isLocal !== undefined) newParams = newParams.set('isLocal', isLocal) + if (include !== undefined) newParams = newParams.set('include', include) + if (isLive !== undefined) newParams = newParams.set('isLive', isLive) + if (nsfw !== undefined) newParams = newParams.set('nsfw', nsfw) + if (nsfwPolicy !== undefined) newParams = newParams.set('nsfw', this.nsfwPolicyToParam(nsfwPolicy)) + if (languageOneOf !== undefined) newParams = this.restService.addArrayParams(newParams, 'languageOneOf', languageOneOf) + if (categoryOneOf !== undefined) newParams = this.restService.addArrayParams(newParams, 'categoryOneOf', categoryOneOf) + if (privacyOneOf !== undefined) newParams = this.restService.addArrayParams(newParams, 'privacyOneOf', privacyOneOf) return newParams }