X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-moderation%2Fvideo-block.component.ts;h=f8b22a3f61175be55cccab06dda85a0f162184f5;hb=371d4c60639e405ce8a503bea1395e9102fbba84;hp=2bef9efdd770b5a11a41fdc9ff9e085b412c0625;hpb=66357162f8e1227495f09bd4f68446aad7071c6d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-moderation/video-block.component.ts b/client/src/app/shared/shared-moderation/video-block.component.ts index 2bef9efdd..f8b22a3f6 100644 --- a/client/src/app/shared/shared-moderation/video-block.component.ts +++ b/client/src/app/shared/shared-moderation/video-block.component.ts @@ -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) + }) } }