From 228393302d98136d4dc35c5f197edc8cebd5d64f Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 15 Jun 2020 13:18:22 +0200 Subject: factorize account/server blocklists for users and instance (#2875) --- .../instance-account-blocklist.component.html | 2 +- .../instance-account-blocklist.component.ts | 67 ++---------------- .../instance-server-blocklist.component.html | 59 ---------------- .../instance-server-blocklist.component.scss | 25 ------- .../instance-server-blocklist.component.ts | 81 ++-------------------- .../+admin/moderation/moderation.component.scss | 4 -- .../video-abuse-list.component.html | 2 +- .../video-block-list.component.html | 2 +- 8 files changed, 15 insertions(+), 227 deletions(-) delete mode 100644 client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html delete mode 100644 client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss (limited to 'client/src/app/+admin/moderation') diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html index b7d40be60..486785f35 100644 --- a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html @@ -54,7 +54,7 @@ -
+
No account found matching current filters. No account found.
diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts index 73a9ae75d..90a176194 100644 --- a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts @@ -1,70 +1,15 @@ -import { Component, OnInit } from '@angular/core' -import { Notifier } from '@app/core' -import { I18n } from '@ngx-translate/i18n-polyfill' -import { RestPagination, RestTable } from '@app/shared' -import { SortMeta } from 'primeng/api' -import { AccountBlock, BlocklistService } from '@app/shared/blocklist' -import { Actor } from '@app/shared/actor/actor.model' +import { Component } from '@angular/core' +import { GenericAccountBlocklistComponent, BlocklistComponentType } from '@app/shared/blocklist' @Component({ selector: 'my-instance-account-blocklist', - styleUrls: [ '../moderation.component.scss', './instance-account-blocklist.component.scss' ], - templateUrl: './instance-account-blocklist.component.html' + styleUrls: [ '../moderation.component.scss', '../../../shared/blocklist/account-blocklist.component.scss' ], + templateUrl: '../../../shared/blocklist/account-blocklist.component.html' }) -export class InstanceAccountBlocklistComponent extends RestTable implements OnInit { - blockedAccounts: AccountBlock[] = [] - totalRecords = 0 - sort: SortMeta = { field: 'createdAt', order: -1 } - pagination: RestPagination = { count: this.rowsPerPage, start: 0 } - - constructor ( - private notifier: Notifier, - private blocklistService: BlocklistService, - private i18n: I18n - ) { - super() - } - - ngOnInit () { - this.initialize() - } +export class InstanceAccountBlocklistComponent extends GenericAccountBlocklistComponent { + mode = BlocklistComponentType.Instance getIdentifier () { return 'InstanceAccountBlocklistComponent' } - - switchToDefaultAvatar ($event: Event) { - ($event.target as HTMLImageElement).src = Actor.GET_DEFAULT_AVATAR_URL() - } - - unblockAccount (accountBlock: AccountBlock) { - const blockedAccount = accountBlock.blockedAccount - - this.blocklistService.unblockAccountByInstance(blockedAccount) - .subscribe( - () => { - this.notifier.success( - this.i18n('Account {{nameWithHost}} unmuted by your instance.', { nameWithHost: blockedAccount.nameWithHost }) - ) - - this.loadData() - } - ) - } - - protected loadData () { - return this.blocklistService.getInstanceAccountBlocklist({ - pagination: this.pagination, - sort: this.sort, - search: this.search - }) - .subscribe( - resultList => { - this.blockedAccounts = resultList.data - this.totalRecords = resultList.total - }, - - err => this.notifier.error(err.message) - ) - } } diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html deleted file mode 100644 index 7a77b8842..000000000 --- a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html +++ /dev/null @@ -1,59 +0,0 @@ - - -
-
- - - Clear filters -
- - - Mute domain - -
-
- - - - Instance - Muted at - - - - - - - - - {{ serverBlock.blockedServer.host }} - - - - {{ serverBlock.createdAt | date: 'short' }} - - - - - - - - - -
- No server found matching current filters. - No server found. -
- - -
-
- - diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss deleted file mode 100644 index c1f66116b..000000000 --- a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss +++ /dev/null @@ -1,25 +0,0 @@ -@import '_variables'; -@import '_mixins'; - -a { - @include disable-default-a-behaviour; - display: inline-block; - - &, &:hover { - color: pvar(--mainForegroundColor); - } - - span { - font-size: 80%; - color: pvar(--inputPlaceholderColor); - } -} - -.unblock-button { - @include peertube-button; - @include grey-button; -} - -.block-button { - @include create-button; -} diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts index 559c9c0b0..9d4ec174a 100644 --- a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts @@ -1,84 +1,15 @@ -import { Component, OnInit, ViewChild } from '@angular/core' -import { Notifier } from '@app/core' -import { I18n } from '@ngx-translate/i18n-polyfill' -import { RestPagination, RestTable } from '@app/shared' -import { SortMeta } from 'primeng/api' -import { BlocklistService } from '@app/shared/blocklist' -import { ServerBlock } from '../../../../../../shared' -import { BatchDomainsModalComponent } from '@app/+admin/config/shared/batch-domains-modal.component' +import { Component } from '@angular/core' +import { GenericServerBlocklistComponent, BlocklistComponentType } from '@app/shared/blocklist' @Component({ selector: 'my-instance-server-blocklist', - styleUrls: [ '../moderation.component.scss', './instance-server-blocklist.component.scss' ], - templateUrl: './instance-server-blocklist.component.html' + styleUrls: [ '../../../shared/blocklist/server-blocklist.component.scss' ], + templateUrl: '../../../shared/blocklist/server-blocklist.component.html' }) -export class InstanceServerBlocklistComponent extends RestTable implements OnInit { - @ViewChild('batchDomainsModal') batchDomainsModal: BatchDomainsModalComponent - - blockedServers: ServerBlock[] = [] - totalRecords = 0 - sort: SortMeta = { field: 'createdAt', order: -1 } - pagination: RestPagination = { count: this.rowsPerPage, start: 0 } - - constructor ( - private notifier: Notifier, - private blocklistService: BlocklistService, - private i18n: I18n - ) { - super() - } - - ngOnInit () { - this.initialize() - } +export class InstanceServerBlocklistComponent extends GenericServerBlocklistComponent { + mode = BlocklistComponentType.Instance getIdentifier () { return 'InstanceServerBlocklistComponent' } - - unblockServer (serverBlock: ServerBlock) { - const host = serverBlock.blockedServer.host - - this.blocklistService.unblockServerByInstance(host) - .subscribe( - () => { - this.notifier.success(this.i18n('Instance {{host}} unmuted by your instance.', { host })) - - this.loadData() - } - ) - } - - addServersToBlock () { - this.batchDomainsModal.openModal() - } - - onDomainsToBlock (domains: string[]) { - domains.forEach(domain => { - this.blocklistService.blockServerByInstance(domain) - .subscribe( - () => { - this.notifier.success(this.i18n('Instance {{domain}} muted by your instance.', { domain })) - - this.loadData() - } - ) - }) - } - - protected loadData () { - return this.blocklistService.getInstanceServerBlocklist({ - pagination: this.pagination, - sort: this.sort, - search: this.search - }) - .subscribe( - resultList => { - this.blockedServers = resultList.data - this.totalRecords = resultList.total - }, - - err => this.notifier.error(err.message) - ) - } } diff --git a/client/src/app/+admin/moderation/moderation.component.scss b/client/src/app/+admin/moderation/moderation.component.scss index 404eb0504..ba68cf6f6 100644 --- a/client/src/app/+admin/moderation/moderation.component.scss +++ b/client/src/app/+admin/moderation/moderation.component.scss @@ -16,10 +16,6 @@ } } -.empty-table-message { - @include empty-state; -} - .moderation-expanded { font-size: 90%; diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html index a2ed51559..64641b28a 100644 --- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html +++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html @@ -137,7 +137,7 @@ -
+
No video abuses found matching current filters. No video abuses found.
diff --git a/client/src/app/+admin/moderation/video-block-list/video-block-list.component.html b/client/src/app/+admin/moderation/video-block-list/video-block-list.component.html index a01a2566d..ec20e46f1 100644 --- a/client/src/app/+admin/moderation/video-block-list/video-block-list.component.html +++ b/client/src/app/+admin/moderation/video-block-list/video-block-list.component.html @@ -102,7 +102,7 @@ -
+
No blocked video found matching current filters. No blocked video found.
-- cgit v1.2.3