feat(plugins): add filter:admin-user-moderation.actions.create.result

pull/6692/head
kontrollanten 2024-03-14 06:51:05 +01:00
parent c1a8904154
commit 892bb40226
2 changed files with 17 additions and 11 deletions

View File

@ -1,5 +1,5 @@
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core'
import { AuthService, ConfirmService, Notifier, ServerService } from '@app/core'
import { AuthService, ConfirmService, HooksService, Notifier, PluginService, ServerService } from '@app/core'
import { BulkRemoveCommentsOfBody, User, UserRight } from '@peertube/peertube-models'
import { BlocklistService } from './blocklist.service'
import { BulkService } from './bulk.service'
@ -58,7 +58,9 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges {
private serverService: ServerService,
private userAdminService: UserAdminService,
private blocklistService: BlocklistService,
private bulkService: BulkService
private bulkService: BulkService,
private hooks: HooksService,
private pluginService: PluginService
) { }
ngOnInit () {
@ -66,7 +68,8 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges {
.subscribe(config => this.requiresEmailVerification = config.signup.requiresEmailVerification)
}
ngOnChanges () {
async ngOnChanges () {
await this.pluginService.ensurePluginsAreLoaded('admin-users')
this.buildActions()
}
@ -271,20 +274,20 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges {
return account && this.authService.getUser().account.id === account.id
}
private buildActions () {
this.userActions = []
private async buildActions () {
const userActions: DropdownAction<{ user: User, account: AccountMutedStatus }>[][] = []
if (this.prependActions && this.prependActions.length !== 0) {
this.userActions = [
this.prependActions
]
userActions.push(this.prependActions)
}
const myAccountModerationActions = this.buildMyAccountModerationActions()
const instanceModerationActions = this.buildInstanceModerationActions()
if (myAccountModerationActions.length !== 0) this.userActions.push(myAccountModerationActions)
if (instanceModerationActions.length !== 0) this.userActions.push(instanceModerationActions)
if (myAccountModerationActions.length !== 0) userActions.push(myAccountModerationActions)
if (instanceModerationActions.length !== 0) userActions.push(instanceModerationActions)
this.userActions = await this.hooks.wrapObject(userActions, 'admin-users', 'filter:admin-user-moderation.actions.create.result')
}
private buildMyAccountModerationActions () {

View File

@ -100,7 +100,10 @@ export const clientFilterHookObject = {
'filter:internal.player.p2p-media-loader.options.result': true,
// Filter bulk actions in user list
'filter:admin-user-list.bulk-actions.create.result': true
'filter:admin-user-list.bulk-actions.create.result': true,
// Filter user moderation actions
'filter:admin-user-moderation.actions.create.result': true
}
export type ClientFilterHookName = keyof typeof clientFilterHookObject