Lazy load all routes
[oweals/peertube.git] / client / src / app / +admin / moderation / video-abuse-list / video-abuse-details.component.ts
1 import { Component, Input } from '@angular/core'
2 import { Actor } from '@app/shared/shared-main'
3 import { I18n } from '@ngx-translate/i18n-polyfill'
4 import { VideoAbusePredefinedReasonsString } from '../../../../../../shared/models/videos/abuse/video-abuse-reason.model'
5 import { ProcessedVideoAbuse } from './video-abuse-list.component'
6 import { durationToString } from '@app/helpers'
7
8 @Component({
9   selector: 'my-video-abuse-details',
10   templateUrl: './video-abuse-details.component.html',
11   styleUrls: [ '../moderation.component.scss' ]
12 })
13 export class VideoAbuseDetailsComponent {
14   @Input() videoAbuse: ProcessedVideoAbuse
15
16   private predefinedReasonsTranslations: { [key in VideoAbusePredefinedReasonsString]: string }
17
18   constructor (
19     private i18n: I18n
20   ) {
21     this.predefinedReasonsTranslations = {
22       violentOrRepulsive: this.i18n('Violent or Repulsive'),
23       hatefulOrAbusive: this.i18n('Hateful or Abusive'),
24       spamOrMisleading: this.i18n('Spam or Misleading'),
25       privacy: this.i18n('Privacy'),
26       rights: this.i18n('Rights'),
27       serverRules: this.i18n('Server rules'),
28       thumbnails: this.i18n('Thumbnails'),
29       captions: this.i18n('Captions')
30     }
31   }
32
33   get startAt () {
34     return durationToString(this.videoAbuse.startAt)
35   }
36
37   get endAt () {
38     return durationToString(this.videoAbuse.endAt)
39   }
40
41   getPredefinedReasons () {
42     if (!this.videoAbuse.predefinedReasons) return []
43     return this.videoAbuse.predefinedReasons.map(r => ({
44       id: r,
45       label: this.predefinedReasonsTranslations[r]
46     }))
47   }
48
49   switchToDefaultAvatar ($event: Event) {
50     ($event.target as HTMLImageElement).src = Actor.GET_DEFAULT_AVATAR_URL()
51   }
52 }