mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-02-25 18:55:32 -06:00
94 lines
2.7 KiB
TypeScript
94 lines
2.7 KiB
TypeScript
import { Component, OnInit, ViewChild } from '@angular/core'
|
|
import { Notifier, ServerService } from '@app/core'
|
|
import { I18n } from '@ngx-translate/i18n-polyfill'
|
|
import { ContactAdminModalComponent } from '@app/+about/about-instance/contact-admin-modal.component'
|
|
import { InstanceService } from '@app/shared/instance/instance.service'
|
|
import { MarkdownService } from '@app/shared/renderer'
|
|
import { forkJoin } from 'rxjs'
|
|
import { map, switchMap } from 'rxjs/operators'
|
|
import { ServerConfig } from '@shared/models'
|
|
|
|
@Component({
|
|
selector: 'my-about-instance',
|
|
templateUrl: './about-instance.component.html',
|
|
styleUrls: [ './about-instance.component.scss' ]
|
|
})
|
|
export class AboutInstanceComponent implements OnInit {
|
|
@ViewChild('contactAdminModal', { static: true }) contactAdminModal: ContactAdminModalComponent
|
|
|
|
shortDescription = ''
|
|
|
|
html = {
|
|
description: '',
|
|
terms: '',
|
|
codeOfConduct: '',
|
|
moderationInformation: '',
|
|
administrator: '',
|
|
hardwareInformation: ''
|
|
}
|
|
|
|
creationReason = ''
|
|
maintenanceLifetime = ''
|
|
businessModel = ''
|
|
|
|
languages: string[] = []
|
|
categories: string[] = []
|
|
|
|
serverConfig: ServerConfig
|
|
|
|
constructor (
|
|
private notifier: Notifier,
|
|
private serverService: ServerService,
|
|
private instanceService: InstanceService,
|
|
private markdownService: MarkdownService,
|
|
private i18n: I18n
|
|
) {}
|
|
|
|
get instanceName () {
|
|
return this.serverConfig.instance.name
|
|
}
|
|
|
|
get isContactFormEnabled () {
|
|
return this.serverConfig.email.enabled && this.serverConfig.contactForm.enabled
|
|
}
|
|
|
|
get isNSFW () {
|
|
return this.serverConfig.instance.isNSFW
|
|
}
|
|
|
|
ngOnInit () {
|
|
this.serverConfig = this.serverService.getTmpConfig()
|
|
this.serverService.getConfig()
|
|
.subscribe(config => this.serverConfig = config)
|
|
|
|
this.instanceService.getAbout()
|
|
.pipe(
|
|
switchMap(about => {
|
|
return forkJoin([
|
|
this.instanceService.buildTranslatedLanguages(about),
|
|
this.instanceService.buildTranslatedCategories(about)
|
|
]).pipe(map(([ languages, categories ]) => ({ about, languages, categories })))
|
|
})
|
|
).subscribe(
|
|
async ({ about, languages, categories }) => {
|
|
this.languages = languages
|
|
this.categories = categories
|
|
|
|
this.shortDescription = about.instance.shortDescription
|
|
|
|
this.creationReason = about.instance.creationReason
|
|
this.maintenanceLifetime = about.instance.maintenanceLifetime
|
|
this.businessModel = about.instance.businessModel
|
|
|
|
this.html = await this.instanceService.buildHtml(about)
|
|
},
|
|
|
|
() => this.notifier.error(this.i18n('Cannot get about information from server'))
|
|
)
|
|
}
|
|
|
|
openContactModal () {
|
|
return this.contactAdminModal.show()
|
|
}
|
|
}
|