diff options
author | kontrollanten <6680299+kontrollanten@users.noreply.github.com> | 2022-07-08 10:57:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-08 10:57:29 +0200 |
commit | a28b0f696c1990a3e7a7385e65d8ea910f46be1e (patch) | |
tree | df494c61c20c86ca82a566b88d1987fb8a7ea703 | |
parent | f8b4a71d428703811fa74dd811ef715c7d7afff6 (diff) | |
download | PeerTube-a28b0f696c1990a3e7a7385e65d8ea910f46be1e.tar.gz PeerTube-a28b0f696c1990a3e7a7385e65d8ea910f46be1e.tar.zst PeerTube-a28b0f696c1990a3e7a7385e65d8ea910f46be1e.zip |
fix(client/AbuseDetails): infinite update loop (#5109)
* fix(client/AbuseDetails): infinite update loop
* Abuse may not have predefined reasons
Co-authored-by: Chocobozzz <me@florianbigard.com>
-rw-r--r-- | client/src/app/shared/shared-abuse-list/abuse-details.component.html | 7 | ||||
-rw-r--r-- | client/src/app/shared/shared-abuse-list/abuse-details.component.ts | 23 |
2 files changed, 15 insertions, 15 deletions
diff --git a/client/src/app/shared/shared-abuse-list/abuse-details.component.html b/client/src/app/shared/shared-abuse-list/abuse-details.component.html index fdf700f7c..089be501d 100644 --- a/client/src/app/shared/shared-abuse-list/abuse-details.component.html +++ b/client/src/app/shared/shared-abuse-list/abuse-details.component.html | |||
@@ -60,10 +60,9 @@ | |||
60 | <span class="moderation-expanded-text" [innerHTML]="abuse.reasonHtml"></span> | 60 | <span class="moderation-expanded-text" [innerHTML]="abuse.reasonHtml"></span> |
61 | </div> | 61 | </div> |
62 | 62 | ||
63 | <div *ngIf="getPredefinedReasons()" class="mt-2 d-flex"> | 63 | <div *ngIf="predefinedReasons" class="mt-2 d-flex"> |
64 | <span class="></span> | 64 | <span> |
65 | <span class="> | 65 | <a *ngFor="let reason of predefinedReasons" [routerLink]="[ '.' ]" |
66 | <a *ngFor="let reason of getPredefinedReasons()" [routerLink]="[ '.' ]" | ||
67 | [queryParams]="{ 'search': 'tag:' + reason.id }" class="chip rectangular bg-secondary text-light" | 66 | [queryParams]="{ 'search': 'tag:' + reason.id }" class="chip rectangular bg-secondary text-light" |
68 | > | 67 | > |
69 | <div>{{ reason.label }}</div> | 68 | <div>{{ reason.label }}</div> |
diff --git a/client/src/app/shared/shared-abuse-list/abuse-details.component.ts b/client/src/app/shared/shared-abuse-list/abuse-details.component.ts index 14674c5f0..e15edf8c2 100644 --- a/client/src/app/shared/shared-abuse-list/abuse-details.component.ts +++ b/client/src/app/shared/shared-abuse-list/abuse-details.component.ts | |||
@@ -1,4 +1,4 @@ | |||
1 | import { Component, Input } from '@angular/core' | 1 | import { Component, Input, OnInit } from '@angular/core' |
2 | import { durationToString } from '@app/helpers' | 2 | import { durationToString } from '@app/helpers' |
3 | import { AbusePredefinedReasonsString } from '@shared/models' | 3 | import { AbusePredefinedReasonsString } from '@shared/models' |
4 | import { ProcessedAbuse } from './processed-abuse.model' | 4 | import { ProcessedAbuse } from './processed-abuse.model' |
@@ -8,10 +8,11 @@ import { ProcessedAbuse } from './processed-abuse.model' | |||
8 | templateUrl: './abuse-details.component.html', | 8 | templateUrl: './abuse-details.component.html', |
9 | styleUrls: [ '../shared-moderation/moderation.scss', './abuse-details.component.scss' ] | 9 | styleUrls: [ '../shared-moderation/moderation.scss', './abuse-details.component.scss' ] |
10 | }) | 10 | }) |
11 | export class AbuseDetailsComponent { | 11 | export class AbuseDetailsComponent implements OnInit { |
12 | @Input() abuse: ProcessedAbuse | 12 | @Input() abuse: ProcessedAbuse |
13 | @Input() isAdminView: boolean | 13 | @Input() isAdminView: boolean |
14 | 14 | ||
15 | predefinedReasons: { id: string, label: string }[] | ||
15 | private predefinedReasonsTranslations: { [key in AbusePredefinedReasonsString]: string } | 16 | private predefinedReasonsTranslations: { [key in AbusePredefinedReasonsString]: string } |
16 | 17 | ||
17 | constructor () { | 18 | constructor () { |
@@ -27,6 +28,15 @@ export class AbuseDetailsComponent { | |||
27 | } | 28 | } |
28 | } | 29 | } |
29 | 30 | ||
31 | ngOnInit (): void { | ||
32 | if (!this.abuse.predefinedReasons) return | ||
33 | |||
34 | this.predefinedReasons = this.abuse.predefinedReasons.map(r => ({ | ||
35 | id: r, | ||
36 | label: this.predefinedReasonsTranslations[r] | ||
37 | })) | ||
38 | } | ||
39 | |||
30 | get startAt () { | 40 | get startAt () { |
31 | return durationToString(this.abuse.video.startAt) | 41 | return durationToString(this.abuse.video.startAt) |
32 | } | 42 | } |
@@ -34,13 +44,4 @@ export class AbuseDetailsComponent { | |||
34 | get endAt () { | 44 | get endAt () { |
35 | return durationToString(this.abuse.video.endAt) | 45 | return durationToString(this.abuse.video.endAt) |
36 | } | 46 | } |
37 | |||
38 | getPredefinedReasons () { | ||
39 | if (!this.abuse.predefinedReasons) return [] | ||
40 | |||
41 | return this.abuse.predefinedReasons.map(r => ({ | ||
42 | id: r, | ||
43 | label: this.predefinedReasonsTranslations[r] | ||
44 | })) | ||
45 | } | ||
46 | } | 47 | } |