]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/shared/shared-instance/instance-about-accordion.component.ts
Add ability to set custom markdown in description
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / shared-instance / instance-about-accordion.component.ts
CommitLineData
40360c17
K
1import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'
2import { NgbAccordion } from '@ng-bootstrap/ng-bootstrap'
3import { InstanceService } from './instance.service'
4import { Notifier } from '@app/core'
5import { About } from '@shared/models/server'
6
7@Component({
8 selector: 'my-instance-about-accordion',
9 templateUrl: './instance-about-accordion.component.html',
10 styleUrls: ['./instance-about-accordion.component.scss']
11})
12export class InstanceAboutAccordionComponent implements OnInit {
13 @ViewChild('accordion', { static: true }) accordion: NgbAccordion
14 @Output() init: EventEmitter<InstanceAboutAccordionComponent> = new EventEmitter<InstanceAboutAccordionComponent>()
15
16 @Input() panels = {
17 features: true,
18 administrators: true,
19 moderation: true,
20 codeOfConduct: true,
21 terms: true
22 }
23
24 about: About
25 aboutHtml = {
40360c17
K
26 terms: '',
27 codeOfConduct: '',
28 moderationInformation: '',
29 administrator: ''
30 }
31
32 constructor (
33 private instanceService: InstanceService,
34 private notifier: Notifier
35 ) { }
36
37 ngOnInit (): void {
38 this.instanceService.getAbout()
39 .subscribe(
40 async about => {
41 this.about = about
42
43 this.aboutHtml = await this.instanceService.buildHtml(about)
44
45 this.init.emit(this)
46 },
47
48 err => this.notifier.error(err.message)
49 )
50 }
51
52 getAdministratorsPanel () {
53 if (!this.about) return false
54 if (!this.panels.administrators) return false
55
56 return !!(this.aboutHtml?.administrator || this.about?.instance.maintenanceLifetime || this.about?.instance.businessModel)
57 }
58
59 get moderationPanel () {
60 return this.panels.moderation && !!this.aboutHtml.moderationInformation
61 }
62
63 get codeOfConductPanel () {
64 return this.panels.codeOfConduct && !!this.aboutHtml.codeOfConduct
65 }
66
67 get termsPanel () {
68 return this.panels.terms && !!this.aboutHtml.terms
69 }
70}