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 {
title: $localize`Video type`,
children: [
{
- queryParams: { search: 'isLive:false' },
+ value: 'isLive:false',
label: $localize`VOD`
},
{
- queryParams: { search: 'isLive:true' },
+ value: 'isLive:true',
label: $localize`Live`
}
]
title: $localize`Video files`,
children: [
{
- queryParams: { search: 'webtorrent:true' },
+ value: 'webtorrent:true',
label: $localize`With WebTorrent`
},
{
- queryParams: { search: 'webtorrent:false' },
+ value: 'webtorrent:false',
label: $localize`Without WebTorrent`
},
{
- queryParams: { search: 'hls:true' },
+ value: 'hls:true',
label: $localize`With HLS`
},
{
- queryParams: { search: 'hls:false' },
+ value: 'hls:false',
label: $localize`Without HLS`
}
]
title: $localize`Videos scope`,
children: [
{
- queryParams: { search: 'isLocal:false' },
+ value: 'isLocal:false',
label: $localize`Remote videos`
},
{
- queryParams: { search: 'isLocal:true' },
+ value: 'isLocal:true',
label: $localize`Local videos`
}
]
title: $localize`Exclude`,
children: [
{
- queryParams: { search: 'excludeMuted' },
+ value: 'excludeMuted',
label: $localize`Exclude muted accounts`
+ },
+ {
+ value: 'excludePublic',
+ label: $localize`Exclude public videos`
}
]
}
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: {
excludeMuted: {
prefix: 'excludeMuted',
handler: () => true
+ },
+ excludePublic: {
+ prefix: 'excludePublic',
+ handler: () => true
}
})
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 })
}
}