X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Babout%2Fabout-instance%2Fabout-instance.resolver.ts;h=f52a95b88e6233003f5bf9613655b7a782089676;hb=0c302acb3c358b4d4d8dee45aed1de1108ea37ea;hp=94c6abe5a413d200628fd23bc85c114569bed237;hpb=4c1def5fd8e9f483238eb38e221f555e2e6bbf07;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+about/about-instance/about-instance.resolver.ts b/client/src/app/+about/about-instance/about-instance.resolver.ts index 94c6abe5a..f52a95b88 100644 --- a/client/src/app/+about/about-instance/about-instance.resolver.ts +++ b/client/src/app/+about/about-instance/about-instance.resolver.ts @@ -1,27 +1,66 @@ -import { Injectable } from '@angular/core' -import { ActivatedRouteSnapshot, Resolve } from '@angular/router' +import { forkJoin, Observable } from 'rxjs' import { map, switchMap } from 'rxjs/operators' -import { forkJoin } from 'rxjs' -import { InstanceService } from '@app/shared/instance/instance.service' -import { About } from '@shared/models/server' +import { Injectable } from '@angular/core' +import { ServerService } from '@app/core' +import { CustomMarkupService } from '@app/shared/shared-custom-markup' +import { AboutHTML, InstanceService } from '@app/shared/shared-instance' +import { About, ServerStats } from '@shared/models/server' -export type ResolverData = { about: About, languages: string[], categories: string[] } +export type ResolverData = { + serverStats: ServerStats + about: About + languages: string[] + categories: string[] + aboutHTML: AboutHTML + descriptionElement: HTMLDivElement +} @Injectable() -export class AboutInstanceResolver implements Resolve { +export class AboutInstanceResolver { + constructor ( - private instanceService: InstanceService + private instanceService: InstanceService, + private customMarkupService: CustomMarkupService, + private serverService: ServerService ) {} - resolve (route: ActivatedRouteSnapshot) { + resolve (): Observable { + return forkJoin([ + this.buildInstanceAboutObservable(), + this.buildInstanceStatsObservable() + ]).pipe( + map(([ + [ about, languages, categories, aboutHTML, { rootElement } ], + serverStats + ]) => { + return { + serverStats, + about, + languages, + categories, + aboutHTML, + descriptionElement: rootElement + } + }) + ) + } + + private buildInstanceAboutObservable () { return this.instanceService.getAbout() - .pipe( - switchMap(about => { - return forkJoin([ - this.instanceService.buildTranslatedLanguages(about), - this.instanceService.buildTranslatedCategories(about) - ]).pipe(map(([ languages, categories ]) => ({ about, languages, categories }))) - }) - ) + .pipe( + switchMap(about => { + return forkJoin([ + Promise.resolve(about), + this.instanceService.buildTranslatedLanguages(about), + this.instanceService.buildTranslatedCategories(about), + this.instanceService.buildHtml(about), + this.customMarkupService.buildElement(about.instance.description) + ]) + }) + ) + } + + private buildInstanceStatsObservable () { + return this.serverService.getServerStats() } }