import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'
+import { HooksService, Notifier } from '@app/core'
import { NgbAccordion } from '@ng-bootstrap/ng-bootstrap'
-import { InstanceService } from './instance.service'
-import { Notifier } from '@app/core'
+import { ClientFilterHookName, PluginClientScope } from '@shared/models/plugins'
import { About } from '@shared/models/server'
+import { InstanceService } from './instance.service'
@Component({
selector: 'my-instance-about-accordion',
})
export class InstanceAboutAccordionComponent implements OnInit {
@ViewChild('accordion', { static: true }) accordion: NgbAccordion
+
@Output() init: EventEmitter<InstanceAboutAccordionComponent> = new EventEmitter<InstanceAboutAccordionComponent>()
+ @Input() displayInstanceName = true
+ @Input() displayInstanceShortDescription = true
+
+ @Input() pluginScope: PluginClientScope
+ @Input() pluginHook: ClientFilterHookName
+
@Input() panels = {
features: true,
administrators: true,
administrator: ''
}
+ pluginPanels: { id: string, title: string, html: string }[] = []
+
constructor (
private instanceService: InstanceService,
- private notifier: Notifier
+ private notifier: Notifier,
+ private hookService: HooksService
) { }
- ngOnInit (): void {
+ async ngOnInit () {
this.instanceService.getAbout()
.subscribe({
next: async about => {
error: err => this.notifier.error(err.message)
})
+
+ this.pluginPanels = await this.hookService.wrapObject([], this.pluginScope, this.pluginHook)
}
getAdministratorsPanel () {
return !!(this.aboutHtml?.administrator || this.about?.instance.maintenanceLifetime || this.about?.instance.businessModel)
}
+ getTermsTitle () {
+ return $localize`Terms of ${this.about.instance.name}`
+ }
+
get moderationPanel () {
return this.panels.moderation && !!this.aboutHtml.moderationInformation
}