X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-moderation%2Fuser-ban-modal.component.ts;h=617408f2a641b389c3138c45702863cc0aac16d5;hb=fba911e2c89708a166636e3a93fcd8fcbc3de7e1;hp=b3f03990f66a1095ea8f26f89360270cd685609a;hpb=5a8de57d574045c5f819b8c81fb0530a9e9a699f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-moderation/user-ban-modal.component.ts b/client/src/app/shared/shared-moderation/user-ban-modal.component.ts index b3f03990f..617408f2a 100644 --- a/client/src/app/shared/shared-moderation/user-ban-modal.component.ts +++ b/client/src/app/shared/shared-moderation/user-ban-modal.component.ts @@ -1,5 +1,7 @@ +import { forkJoin } from 'rxjs' import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core' import { Notifier } from '@app/core' +import { prepareIcu } from '@app/helpers' import { FormReactive, FormValidatorService } from '@app/shared/shared-forms' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' @@ -42,9 +44,6 @@ export class UserBanModalComponent extends FormReactive implements OnInit { openModal (user: User | User[]) { this.usersToBan = user this.openedModal = this.modalService.open(this.modal, { centered: true }) - - const isSingleUser = !(Array.isArray(this.usersToBan) && this.usersToBan.length > 1) - this.modalMessage = isSingleUser ? $localize`Ban this user` : $localize`Ban these users` } hide () { @@ -56,33 +55,30 @@ export class UserBanModalComponent extends FormReactive implements OnInit { const reason = this.form.value['reason'] || undefined const mute = this.form.value['mute'] - this.userAdminService.banUsers(this.usersToBan, reason) + const observables = [ + this.userAdminService.banUsers(this.usersToBan, reason) + ] + + if (mute) observables.push(this.muteAccounts()) + + forkJoin(observables) .subscribe({ next: () => { - const message = Array.isArray(this.usersToBan) - ? $localize`${this.usersToBan.length} users banned.` - : $localize`User ${this.usersToBan.username} banned.` + let message: string + + if (Array.isArray(this.usersToBan)) { + message = prepareIcu($localize`{count, plural, =1 {1 user banned.} other {{count} users banned.}}`)( + { count: this.usersToBan.length }, + $localize`${this.usersToBan.length} users banned.` + ) + } else { + message = $localize`User ${this.usersToBan.username} banned.` + } this.notifier.success(message) this.userBanned.emit(this.usersToBan) - if (mute) { - const users = Array.isArray(this.usersToBan) ? this.usersToBan : [ this.usersToBan ] - users.forEach(user => { - const account = new Account(user.account) - this.blocklistService.blockAccountByInstance(account) - .subscribe({ - next: () => { - this.notifier.success($localize`Account ${user.username} muted by the instance.`) - account.mutedByInstance = true - }, - - error: err => this.notifier.error(err.message) - }) - }) - } - this.hide() }, @@ -90,4 +86,22 @@ export class UserBanModalComponent extends FormReactive implements OnInit { }) } + getModalTitle () { + if (Array.isArray(this.usersToBan)) { + return prepareIcu($localize`Ban {count, plural, =1 {1 user} other {{count} users}}`)( + { count: this.usersToBan.length }, + $localize`Ban ${this.usersToBan.length} users` + ) + } + + return $localize`Ban "${this.usersToBan.username}"` + } + + private muteAccounts () { + const accounts = Array.isArray(this.usersToBan) + ? this.usersToBan.map(u => new Account(u.account)) + : new Account(this.usersToBan.account) + + return this.blocklistService.blockAccountByInstance(accounts) + } }