X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-abuse-list%2Fabuse-list-table.component.ts;h=a7932ebabd6127e93edd0e2020f24b0c33c8b7cd;hb=15a7eafb892441957ba7dd6fcbf556086fe5b2b3;hp=8b5771237e30605109a1dd1ab21dbea76b6edbba;hpb=fbdcd4ec9f549b730f8311512bcc0c0b7bc2db0a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts b/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts index 8b5771237..a7932ebab 100644 --- a/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts +++ b/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts @@ -1,16 +1,18 @@ import * as debug from 'debug' import truncate from 'lodash-es/truncate' import { SortMeta } from 'primeng/api' -import { buildVideoLink, buildVideoOrPlaylistEmbed } from 'src/assets/player/utils' +import { buildVideoOrPlaylistEmbed } from 'src/assets/player/utils' import { environment } from 'src/environments/environment' -import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core' +import { Component, Input, OnInit, ViewChild } from '@angular/core' import { DomSanitizer } from '@angular/platform-browser' import { ActivatedRoute, Router } from '@angular/router' import { ConfirmService, MarkdownService, Notifier, RestPagination, RestTable } from '@app/core' import { Account, Actor, DropdownAction, Video, VideoService } from '@app/shared/shared-main' import { AbuseService, BlocklistService, VideoBlockService } from '@app/shared/shared-moderation' import { VideoCommentService } from '@app/shared/shared-video-comment' +import { buildVideoEmbedLink, decorateVideoLink } from '@shared/core-utils' import { AbuseState, AdminAbuse } from '@shared/models' +import { AdvancedInputFilter } from '../shared-forms' import { AbuseMessageModalComponent } from './abuse-message-modal.component' import { ModerationCommentModalComponent } from './moderation-comment-modal.component' import { ProcessedAbuse } from './processed-abuse.model' @@ -22,9 +24,8 @@ const logger = debug('peertube:moderation:AbuseListTableComponent') templateUrl: './abuse-list-table.component.html', styleUrls: [ '../shared-moderation/moderation.scss', './abuse-list-table.component.scss' ] }) -export class AbuseListTableComponent extends RestTable implements OnInit, AfterViewInit { +export class AbuseListTableComponent extends RestTable implements OnInit { @Input() viewType: 'admin' | 'user' - @Input() baseRoute: string @ViewChild('abuseMessagesModal', { static: true }) abuseMessagesModal: AbuseMessageModalComponent @ViewChild('moderationCommentModal', { static: true }) moderationCommentModal: ModerationCommentModalComponent @@ -36,6 +37,29 @@ export class AbuseListTableComponent extends RestTable implements OnInit, AfterV abuseActions: DropdownAction[][] = [] + inputFilters: AdvancedInputFilter[] = [ + { + queryParams: { 'search': 'state:pending' }, + label: $localize`Unsolved reports` + }, + { + queryParams: { 'search': 'state:accepted' }, + label: $localize`Accepted reports` + }, + { + queryParams: { 'search': 'state:rejected' }, + label: $localize`Refused reports` + }, + { + queryParams: { 'search': 'videoIs:blacklisted' }, + label: $localize`Reports with blocked videos` + }, + { + queryParams: { 'search': 'videoIs:deleted' }, + label: $localize`Reports with deleted videos` + } + ] + constructor ( protected route: ActivatedRoute, protected router: Router, @@ -66,11 +90,6 @@ export class AbuseListTableComponent extends RestTable implements OnInit, AfterV ] this.initialize() - this.listenToSearchChange() - } - - ngAfterViewInit () { - if (this.search) this.setTableFilter(this.search, false) } isAdminView () { @@ -86,7 +105,7 @@ export class AbuseListTableComponent extends RestTable implements OnInit, AfterV } onModerationCommentUpdated () { - this.loadData() + this.reloadData() } isAbuseAccepted (abuse: AdminAbuse) { @@ -98,21 +117,21 @@ export class AbuseListTableComponent extends RestTable implements OnInit, AfterV } getVideoUrl (abuse: AdminAbuse) { - return Video.buildClientUrl(abuse.video.uuid) + return Video.buildWatchUrl(abuse.video) } getCommentUrl (abuse: AdminAbuse) { - return Video.buildClientUrl(abuse.comment.video.uuid) + ';threadId=' + abuse.comment.threadId + return Video.buildWatchUrl(abuse.comment.video) + ';threadId=' + abuse.comment.threadId } getAccountUrl (abuse: ProcessedAbuse) { - return '/accounts/' + abuse.flaggedAccount.nameWithHost + return '/a/' + abuse.flaggedAccount.nameWithHost } getVideoEmbed (abuse: AdminAbuse) { return buildVideoOrPlaylistEmbed( - buildVideoLink({ - baseUrl: `${environment.originServerUrl}/videos/embed/${abuse.video.uuid}`, + decorateVideoLink({ + url: buildVideoEmbedLink(abuse.video, environment.originServerUrl), title: false, warningTitle: false, startTime: abuse.video.startAt, @@ -129,7 +148,7 @@ export class AbuseListTableComponent extends RestTable implements OnInit, AfterV this.abuseService.removeAbuse(abuse).subscribe( () => { this.notifier.success($localize`Abuse deleted.`) - this.loadData() + this.reloadData() }, err => this.notifier.error(err.message) @@ -139,7 +158,7 @@ export class AbuseListTableComponent extends RestTable implements OnInit, AfterV updateAbuseState (abuse: AdminAbuse, state: AbuseState) { this.abuseService.updateAbuse(abuse, { state }) .subscribe( - () => this.loadData(), + () => this.reloadData(), err => this.notifier.error(err.message) ) @@ -166,7 +185,7 @@ export class AbuseListTableComponent extends RestTable implements OnInit, AfterV return Actor.IS_LOCAL(abuse.reporterAccount.host) } - protected loadData () { + protected reloadData () { logger('Loading data.') const options = {