]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/shared/shared-moderation/video-block.component.ts
Support ICU in TS components
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / shared-moderation / video-block.component.ts
index 2bef9efdd770b5a11a41fdc9ff9e085b412c0625..e14473b89cb4fe220958dee90593714e8eaec826 100644 (file)
@@ -1,9 +1,11 @@
-import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'
+import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'
 import { Notifier } from '@app/core'
-import { FormReactive, FormValidatorService, VideoBlockValidatorsService } from '@app/shared/shared-forms'
+import { prepareIcu } from '@app/helpers'
+import { FormReactive, FormValidatorService } from '@app/shared/shared-forms'
 import { Video } from '@app/shared/shared-main'
 import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
 import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
+import { VIDEO_BLOCK_REASON_VALIDATOR } from '../form-validators/video-block-validators'
 import { VideoBlockService } from './video-block.service'
 
 @Component({
@@ -12,12 +14,12 @@ import { VideoBlockService } from './video-block.service'
   styleUrls: [ './video-block.component.scss' ]
 })
 export class VideoBlockComponent extends FormReactive implements OnInit {
-  @Input() video: Video = null
-
   @ViewChild('modal', { static: true }) modal: NgbModal
 
   @Output() videoBlocked = new EventEmitter()
 
+  videos: Video[]
+
   error: string = null
 
   private openedModal: NgbModalRef
@@ -25,7 +27,6 @@ export class VideoBlockComponent extends FormReactive implements OnInit {
   constructor (
     protected formValidatorService: FormValidatorService,
     private modalService: NgbModal,
-    private videoBlockValidatorsService: VideoBlockValidatorsService,
     private videoBlocklistService: VideoBlockService,
     private notifier: Notifier
   ) {
@@ -36,12 +37,30 @@ export class VideoBlockComponent extends FormReactive implements OnInit {
     const defaultValues = { unfederate: 'true' }
 
     this.buildForm({
-      reason: this.videoBlockValidatorsService.VIDEO_BLOCK_REASON,
+      reason: VIDEO_BLOCK_REASON_VALIDATOR,
       unfederate: null
     }, defaultValues)
   }
 
-  show () {
+  isMultiple () {
+    return this.videos.length > 1
+  }
+
+  getSingleVideo () {
+    return this.videos[0]
+  }
+
+  hasLive () {
+    return this.videos.some(v => v.isLive)
+  }
+
+  hasLocal () {
+    return this.videos.some(v => v.isLocal)
+  }
+
+  show (videos: Video[]) {
+    this.videos = videos
+
     this.openedModal = this.modalService.open(this.modal, { centered: true, keyboard: false })
   }
 
@@ -51,22 +70,36 @@ export class VideoBlockComponent extends FormReactive implements OnInit {
   }
 
   block () {
-    const reason = this.form.value[ 'reason' ] || undefined
-    const unfederate = this.video.isLocal ? this.form.value[ 'unfederate' ] : undefined
+    const options = this.videos.map(v => ({
+      videoId: v.id,
+      reason: this.form.value['reason'] || undefined,
+      unfederate: v.isLocal
+        ? this.form.value['unfederate']
+        : undefined
+    }))
+
+    this.videoBlocklistService.blockVideo(options)
+        .subscribe({
+          next: () => {
+            const message = prepareIcu($localize`{count, plural, =1 {Blocked {videoName}} other {Blocked {count} videos}}.`)(
+              { count: this.videos.length, videoName: this.getSingleVideo().name },
+              $localize`Blocked ${this.videos.length} videos.`
+            )
 
-    this.videoBlocklistService.blockVideo(this.video.id, reason, unfederate)
-        .subscribe(
-          () => {
-            this.notifier.success($localize`Video blocked.`)
+            this.notifier.success(message)
             this.hide()
 
-            this.video.blacklisted = true
-            this.video.blockedReason = reason
+            for (const o of options) {
+              const video = this.videos.find(v => v.id === o.videoId)
+
+              video.blacklisted = true
+              video.blacklistedReason = o.reason
+            }
 
             this.videoBlocked.emit()
           },
 
-          err => this.notifier.error(err.message)
-        )
+          error: err => this.notifier.error(err.message)
+        })
   }
 }