From 527a52ac4295a072927ff46761766a8b181a7603 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 12 Nov 2021 14:19:56 +0100 Subject: Add ability to filter out public videos from admin --- .../+admin/overview/videos/video-admin.service.ts | 24 ++++++++++++++++++---- .../app/shared/shared-main/video/video.service.ts | 3 +++ .../shared-video-miniature/video-filters.model.ts | 9 +++++--- 3 files changed, 29 insertions(+), 7 deletions(-) (limited to 'client/src') diff --git a/client/src/app/+admin/overview/videos/video-admin.service.ts b/client/src/app/+admin/overview/videos/video-admin.service.ts index f80de7acd..6a0e8dade 100644 --- a/client/src/app/+admin/overview/videos/video-admin.service.ts +++ b/client/src/app/+admin/overview/videos/video-admin.service.ts @@ -5,7 +5,8 @@ import { Injectable } from '@angular/core' import { RestExtractor, RestPagination, RestService } from '@app/core' import { AdvancedInputFilter } from '@app/shared/shared-forms' import { CommonVideoParams, Video, VideoService } from '@app/shared/shared-main' -import { ResultList, VideoInclude } from '@shared/models' +import { ResultList, VideoInclude, VideoPrivacy } from '@shared/models' +import { getAllPrivacies } from '@shared/core-utils' @Injectable() export class VideoAdminService { @@ -96,6 +97,10 @@ export class VideoAdminService { { value: 'excludeMuted', label: $localize`Exclude muted accounts` + }, + { + value: 'excludePublic', + label: $localize`Exclude public videos` } ] } @@ -105,11 +110,12 @@ export class VideoAdminService { private buildAdminParamsFromSearch (search: string, params: HttpParams) { let include = VideoInclude.BLACKLISTED | VideoInclude.BLOCKED_OWNER | - VideoInclude.HIDDEN_PRIVACY | VideoInclude.NOT_PUBLISHED_STATE | VideoInclude.FILES - if (!search) return this.restService.addObjectParams(params, { include }) + let privacyOneOf = getAllPrivacies() + + if (!search) return this.restService.addObjectParams(params, { include, privacyOneOf }) const filters = this.restService.parseQueryStringFilter(search, { isLocal: { @@ -131,6 +137,10 @@ export class VideoAdminService { excludeMuted: { prefix: 'excludeMuted', handler: () => true + }, + excludePublic: { + prefix: 'excludePublic', + handler: () => true } }) @@ -140,6 +150,12 @@ export class VideoAdminService { filters.excludeMuted = undefined } - return this.restService.addObjectParams(params, { ...filters, include }) + if (filters.excludePublic) { + privacyOneOf = [ VideoPrivacy.PRIVATE, VideoPrivacy.UNLISTED, VideoPrivacy.INTERNAL ] + + filters.excludePublic = undefined + } + + return this.restService.addObjectParams(params, { ...filters, include, privacyOneOf }) } } 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 6edcc3fe0..570e8e3be 100644 --- a/client/src/app/shared/shared-main/video/video.service.ts +++ b/client/src/app/shared/shared-main/video/video.service.ts @@ -38,6 +38,7 @@ export type CommonVideoParams = { isLocal?: boolean categoryOneOf?: number[] languageOneOf?: string[] + privacyOneOf?: VideoPrivacy[] isLive?: boolean skipCount?: boolean @@ -392,6 +393,7 @@ export class VideoService { include, categoryOneOf, languageOneOf, + privacyOneOf, skipCount, nsfwPolicy, isLive, @@ -413,6 +415,7 @@ export class VideoService { 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) return newParams } diff --git a/client/src/app/shared/shared-video-miniature/video-filters.model.ts b/client/src/app/shared/shared-video-miniature/video-filters.model.ts index 5ad7cf3f7..982880b0e 100644 --- a/client/src/app/shared/shared-video-miniature/video-filters.model.ts +++ b/client/src/app/shared/shared-video-miniature/video-filters.model.ts @@ -1,6 +1,6 @@ import { intoArray, toBoolean } from '@app/helpers' -import { AttributesOnly } from '@shared/core-utils' -import { BooleanBothQuery, NSFWPolicyType, VideoInclude, VideoSortField } from '@shared/models' +import { AttributesOnly, getAllPrivacies } from '@shared/core-utils' +import { BooleanBothQuery, NSFWPolicyType, VideoInclude, VideoPrivacy, VideoSortField } from '@shared/models' type VideoFiltersKeys = { [ id in keyof AttributesOnly ]: any @@ -198,13 +198,15 @@ export class VideoFilters { toVideosAPIObject () { let isLocal: boolean let include: VideoInclude + let privacyOneOf: VideoPrivacy[] if (this.scope === 'local') { isLocal = true } if (this.allVideos) { - include = VideoInclude.NOT_PUBLISHED_STATE | VideoInclude.HIDDEN_PRIVACY + include = VideoInclude.NOT_PUBLISHED_STATE + privacyOneOf = getAllPrivacies() } let isLive: boolean @@ -219,6 +221,7 @@ export class VideoFilters { search: this.search, isLocal, include, + privacyOneOf, isLive } } -- cgit v1.2.3