From b42f9c400e7b677046ab0034a3cf7aaaa73ecb6d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 3 Feb 2020 10:31:34 +0100 Subject: Use a resolver for the about page --- .../about-instance/about-instance.resolver.ts | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 client/src/app/+about/about-instance/about-instance.resolver.ts (limited to 'client/src/app/+about/about-instance/about-instance.resolver.ts') diff --git a/client/src/app/+about/about-instance/about-instance.resolver.ts b/client/src/app/+about/about-instance/about-instance.resolver.ts new file mode 100644 index 000000000..94c6abe5a --- /dev/null +++ b/client/src/app/+about/about-instance/about-instance.resolver.ts @@ -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 { + 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 }))) + }) + ) + } +} -- cgit v1.2.3