mirror of https://github.com/Chocobozzz/PeerTube
Use a resolver for the about page
parent
a15871560f
commit
b42f9c400e
|
@ -1,12 +1,10 @@
|
||||||
import { Component, OnInit, ViewChild } from '@angular/core'
|
import { Component, OnInit, ViewChild } from '@angular/core'
|
||||||
import { Notifier, ServerService } from '@app/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 { ContactAdminModalComponent } from '@app/+about/about-instance/contact-admin-modal.component'
|
||||||
import { InstanceService } from '@app/shared/instance/instance.service'
|
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'
|
import { ServerConfig } from '@shared/models'
|
||||||
|
import { ActivatedRoute } from '@angular/router'
|
||||||
|
import { ResolverData } from './about-instance.resolver'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'my-about-instance',
|
selector: 'my-about-instance',
|
||||||
|
@ -37,11 +35,10 @@ export class AboutInstanceComponent implements OnInit {
|
||||||
serverConfig: ServerConfig
|
serverConfig: ServerConfig
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
|
private route: ActivatedRoute,
|
||||||
private notifier: Notifier,
|
private notifier: Notifier,
|
||||||
private serverService: ServerService,
|
private serverService: ServerService,
|
||||||
private instanceService: InstanceService,
|
private instanceService: InstanceService
|
||||||
private markdownService: MarkdownService,
|
|
||||||
private i18n: I18n
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
get instanceName () {
|
get instanceName () {
|
||||||
|
@ -56,35 +53,23 @@ export class AboutInstanceComponent implements OnInit {
|
||||||
return this.serverConfig.instance.isNSFW
|
return this.serverConfig.instance.isNSFW
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit () {
|
async ngOnInit () {
|
||||||
this.serverConfig = this.serverService.getTmpConfig()
|
this.serverConfig = this.serverService.getTmpConfig()
|
||||||
this.serverService.getConfig()
|
this.serverService.getConfig()
|
||||||
.subscribe(config => this.serverConfig = config)
|
.subscribe(config => this.serverConfig = config)
|
||||||
|
|
||||||
this.instanceService.getAbout()
|
const { about, languages, categories }: ResolverData = this.route.snapshot.data.instanceData
|
||||||
.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.languages = languages
|
||||||
|
this.categories = categories
|
||||||
|
|
||||||
this.creationReason = about.instance.creationReason
|
this.shortDescription = about.instance.shortDescription
|
||||||
this.maintenanceLifetime = about.instance.maintenanceLifetime
|
|
||||||
this.businessModel = about.instance.businessModel
|
|
||||||
|
|
||||||
this.html = await this.instanceService.buildHtml(about)
|
this.creationReason = about.instance.creationReason
|
||||||
},
|
this.maintenanceLifetime = about.instance.maintenanceLifetime
|
||||||
|
this.businessModel = about.instance.businessModel
|
||||||
|
|
||||||
() => this.notifier.error(this.i18n('Cannot get about information from server'))
|
this.html = await this.instanceService.buildHtml(about)
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
openContactModal () {
|
openContactModal () {
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
import { Injectable } from '@angular/core'
|
||||||
|
import { ActivatedRouteSnapshot, Resolve } from '@angular/router'
|
||||||
|
import { map, switchMap } from 'rxjs/operators'
|
||||||
|
import { forkJoin } from 'rxjs'
|
||||||
|
import { InstanceService } from '@app/shared/instance/instance.service'
|
||||||
|
import { About } from '@shared/models/server'
|
||||||
|
|
||||||
|
export type ResolverData = { about: About, languages: string[], categories: string[] }
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class AboutInstanceResolver implements Resolve<any> {
|
||||||
|
constructor (
|
||||||
|
private instanceService: InstanceService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
resolve (route: ActivatedRouteSnapshot) {
|
||||||
|
return this.instanceService.getAbout()
|
||||||
|
.pipe(
|
||||||
|
switchMap(about => {
|
||||||
|
return forkJoin([
|
||||||
|
this.instanceService.buildTranslatedLanguages(about),
|
||||||
|
this.instanceService.buildTranslatedCategories(about)
|
||||||
|
]).pipe(map(([ languages, categories ]) => ({ about, languages, categories })))
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ import { AboutComponent } from './about.component'
|
||||||
import { AboutInstanceComponent } from '@app/+about/about-instance/about-instance.component'
|
import { AboutInstanceComponent } from '@app/+about/about-instance/about-instance.component'
|
||||||
import { AboutPeertubeComponent } from '@app/+about/about-peertube/about-peertube.component'
|
import { AboutPeertubeComponent } from '@app/+about/about-peertube/about-peertube.component'
|
||||||
import { AboutFollowsComponent } from '@app/+about/about-follows/about-follows.component'
|
import { AboutFollowsComponent } from '@app/+about/about-follows/about-follows.component'
|
||||||
|
import { AboutInstanceResolver } from '@app/+about/about-instance/about-instance.resolver'
|
||||||
|
|
||||||
const aboutRoutes: Routes = [
|
const aboutRoutes: Routes = [
|
||||||
{
|
{
|
||||||
|
@ -24,6 +25,9 @@ const aboutRoutes: Routes = [
|
||||||
meta: {
|
meta: {
|
||||||
title: 'About this instance'
|
title: 'About this instance'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
instanceData: AboutInstanceResolver
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,6 +7,7 @@ import { AboutPeertubeComponent } from '@app/+about/about-peertube/about-peertub
|
||||||
import { ContactAdminModalComponent } from '@app/+about/about-instance/contact-admin-modal.component'
|
import { ContactAdminModalComponent } from '@app/+about/about-instance/contact-admin-modal.component'
|
||||||
import { AboutFollowsComponent } from '@app/+about/about-follows/about-follows.component'
|
import { AboutFollowsComponent } from '@app/+about/about-follows/about-follows.component'
|
||||||
import { AboutPeertubeContributorsComponent } from '@app/+about/about-peertube/about-peertube-contributors.component'
|
import { AboutPeertubeContributorsComponent } from '@app/+about/about-peertube/about-peertube-contributors.component'
|
||||||
|
import { AboutInstanceResolver } from '@app/+about/about-instance/about-instance.resolver'
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -28,6 +29,7 @@ import { AboutPeertubeContributorsComponent } from '@app/+about/about-peertube/a
|
||||||
],
|
],
|
||||||
|
|
||||||
providers: [
|
providers: [
|
||||||
|
AboutInstanceResolver
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class AboutModule { }
|
export class AboutModule { }
|
||||||
|
|
Loading…
Reference in New Issue