From 789ba349318e7ff012590491e76087a1204cccd4 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 19 Jan 2023 14:52:27 +0100 Subject: Support mailto links for custom markup --- .../about-instance/about-instance.component.html | 40 ++++++++++----------- .../about-instance/about-instance.component.ts | 41 ++++++++-------------- .../about-instance/about-instance.resolver.ts | 25 ++++++++++--- 3 files changed, 55 insertions(+), 51 deletions(-) (limited to 'client/src/app/+about') diff --git a/client/src/app/+about/about-instance/about-instance.component.html b/client/src/app/+about/about-instance/about-instance.component.html index b113df82f..fdd6157e5 100644 --- a/client/src/app/+about/about-instance/about-instance.component.html +++ b/client/src/app/+about/about-instance/about-instance.component.html @@ -21,7 +21,7 @@
-
+ -
+ -
+ -
-
+ -
+
@@ -169,14 +169,14 @@

Terms

-
+
diff --git a/client/src/app/+about/about-instance/about-instance.component.ts b/client/src/app/+about/about-instance/about-instance.component.ts index 0826bbc5a..e1501d7de 100644 --- a/client/src/app/+about/about-instance/about-instance.component.ts +++ b/client/src/app/+about/about-instance/about-instance.component.ts @@ -2,7 +2,7 @@ import { ViewportScroller } from '@angular/common' import { AfterViewChecked, Component, ElementRef, OnInit, ViewChild } from '@angular/core' import { ActivatedRoute } from '@angular/router' import { Notifier, ServerService } from '@app/core' -import { InstanceService } from '@app/shared/shared-instance' +import { AboutHTML } from '@app/shared/shared-instance' import { copyToClipboard } from '@root-helpers/utils' import { HTMLServerConfig } from '@shared/models/server' import { ResolverData } from './about-instance.resolver' @@ -17,22 +17,12 @@ export class AboutInstanceComponent implements OnInit, AfterViewChecked { @ViewChild('descriptionWrapper') descriptionWrapper: ElementRef @ViewChild('contactAdminModal', { static: true }) contactAdminModal: ContactAdminModalComponent - shortDescription = '' - descriptionContent: string - - html = { - terms: '', - codeOfConduct: '', - moderationInformation: '', - administrator: '', - creationReason: '', - maintenanceLifetime: '', - businessModel: '', - hardwareInformation: '' - } + aboutHTML: AboutHTML + descriptionElement: HTMLDivElement languages: string[] = [] categories: string[] = [] + shortDescription = '' initialized = false @@ -44,8 +34,7 @@ export class AboutInstanceComponent implements OnInit, AfterViewChecked { private viewportScroller: ViewportScroller, private route: ActivatedRoute, private notifier: Notifier, - private serverService: ServerService, - private instanceService: InstanceService + private serverService: ServerService ) {} get instanceName () { @@ -60,8 +49,16 @@ export class AboutInstanceComponent implements OnInit, AfterViewChecked { return this.serverConfig.instance.isNSFW } - async ngOnInit () { - const { about, languages, categories }: ResolverData = this.route.snapshot.data.instanceData + ngOnInit () { + const { about, languages, categories, aboutHTML, descriptionElement }: ResolverData = this.route.snapshot.data.instanceData + + this.aboutHTML = aboutHTML + this.descriptionElement = descriptionElement + + this.languages = languages + this.categories = categories + + this.shortDescription = about.instance.shortDescription this.serverConfig = this.serverService.getHTMLConfig() @@ -73,14 +70,6 @@ export class AboutInstanceComponent implements OnInit, AfterViewChecked { this.contactAdminModal.show(prefill) }) - this.languages = languages - this.categories = categories - - this.shortDescription = about.instance.shortDescription - this.descriptionContent = about.instance.description - - this.html = await this.instanceService.buildHtml(about) - this.initialized = true } 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 ee0219df0..8818fc582 100644 --- a/client/src/app/+about/about-instance/about-instance.resolver.ts +++ b/client/src/app/+about/about-instance/about-instance.resolver.ts @@ -2,16 +2,25 @@ import { forkJoin } from 'rxjs' import { map, switchMap } from 'rxjs/operators' import { Injectable } from '@angular/core' import { Resolve } from '@angular/router' -import { InstanceService } from '@app/shared/shared-instance' +import { CustomMarkupService } from '@app/shared/shared-custom-markup' +import { AboutHTML, InstanceService } from '@app/shared/shared-instance' import { About } from '@shared/models/server' -export type ResolverData = { about: About, languages: string[], categories: string[] } +export type ResolverData = { + about: About + languages: string[] + categories: string[] + aboutHTML: AboutHTML + descriptionElement: HTMLDivElement +} @Injectable() export class AboutInstanceResolver implements Resolve { constructor ( - private instanceService: InstanceService + private instanceService: InstanceService, + private customMarkupService: CustomMarkupService + ) {} resolve () { @@ -19,9 +28,15 @@ export class AboutInstanceResolver implements Resolve { .pipe( switchMap(about => { return forkJoin([ + Promise.resolve(about), this.instanceService.buildTranslatedLanguages(about), - this.instanceService.buildTranslatedCategories(about) - ]).pipe(map(([ languages, categories ]) => ({ about, languages, categories }) as ResolverData)) + this.instanceService.buildTranslatedCategories(about), + this.instanceService.buildHtml(about), + this.customMarkupService.buildElement(about.instance.description) + ]) + }), + map(([ about, languages, categories, aboutHTML, { rootElement } ]) => { + return { about, languages, categories, aboutHTML, descriptionElement: rootElement } as ResolverData }) ) } -- cgit v1.2.3