]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/+admin/overview/videos/video-admin.service.ts
Support videos stats in client
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / overview / videos / video-admin.service.ts
index 696609cb213b33b25e183d94f01d33e5f5097b1f..4b9357fb7d835daaecc245517c79ed4a060c59fa 100644 (file)
@@ -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 {
@@ -40,26 +41,66 @@ export class VideoAdminService {
 
   buildAdminInputFilter (): AdvancedInputFilter[] {
     return [
+      {
+        title: $localize`Video type`,
+        children: [
+          {
+            value: 'isLive:false',
+            label: $localize`VOD`
+          },
+          {
+            value: 'isLive:true',
+            label: $localize`Live`
+          }
+        ]
+      },
+
+      {
+        title: $localize`Video files`,
+        children: [
+          {
+            value: 'webtorrent:true isLocal:true',
+            label: $localize`With WebTorrent`
+          },
+          {
+            value: 'webtorrent:false isLocal:true',
+            label: $localize`Without WebTorrent`
+          },
+          {
+            value: 'hls:true isLocal:true',
+            label: $localize`With HLS`
+          },
+          {
+            value: 'hls:false isLocal:true',
+            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`Include/Exclude`,
+        title: $localize`Exclude`,
         children: [
           {
-            queryParams: { search: 'excludeMuted' },
+            value: 'excludeMuted',
             label: $localize`Exclude muted accounts`
+          },
+          {
+            value: 'excludePublic',
+            label: $localize`Exclude public videos`
           }
         ]
       }
@@ -69,20 +110,37 @@ 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: {
         prefix: 'isLocal:',
         isBoolean: true
       },
+      hasHLSFiles: {
+        prefix: 'hls:',
+        isBoolean: true
+      },
+      hasWebtorrentFiles: {
+        prefix: 'webtorrent:',
+        isBoolean: true
+      },
+      isLive: {
+        prefix: 'isLive:',
+        isBoolean: true
+      },
       excludeMuted: {
         prefix: 'excludeMuted',
         handler: () => true
+      },
+      excludePublic: {
+        prefix: 'excludePublic',
+        handler: () => true
       }
     })
 
@@ -92,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 })
   }
 }