From a3f03f5a4fc112ff0207210b02572c9f7249c44f Mon Sep 17 00:00:00 2001 From: PianoNic <79938743+PianoNic@users.noreply.github.com> Date: Thu, 25 Jun 2026 09:39:23 +0200 Subject: [PATCH] Extracted shared legal-page toggle logic into a base class --- src/app/components/legal/impressum.ts | 10 +++------- src/app/components/legal/legal-page-base.ts | 13 +++++++++++++ src/app/components/legal/privacy.ts | 10 +++------- src/app/components/legal/terms.ts | 10 +++------- 4 files changed, 22 insertions(+), 21 deletions(-) create mode 100644 src/app/components/legal/legal-page-base.ts diff --git a/src/app/components/legal/impressum.ts b/src/app/components/legal/impressum.ts index e26267b..abc539f 100644 --- a/src/app/components/legal/impressum.ts +++ b/src/app/components/legal/impressum.ts @@ -1,6 +1,6 @@ -import { Component, computed, inject } from '@angular/core'; +import { Component } from '@angular/core'; import { TranslatePipe } from '@ngx-translate/core'; -import { LanguageService } from '../../services/language'; +import { LegalPageBase } from './legal-page-base'; @Component({ selector: 'app-impressum', @@ -125,8 +125,4 @@ import { LanguageService } from '../../services/language'; `, }) -export class Impressum { - protected lang = inject(LanguageService); - protected showEn = computed(() => this.lang.current() === 'en'); - protected showFallbackNotice = computed(() => !['de', 'en'].includes(this.lang.current())); -} +export class Impressum extends LegalPageBase {} diff --git a/src/app/components/legal/legal-page-base.ts b/src/app/components/legal/legal-page-base.ts new file mode 100644 index 0000000..7d27b0f --- /dev/null +++ b/src/app/components/legal/legal-page-base.ts @@ -0,0 +1,13 @@ +import { computed, Directive, inject } from '@angular/core'; + +import { LanguageService } from '../../services/language'; + +// Shared language-toggle + fallback-notice logic for the legal pages (privacy, +// impressum, terms). The legal text itself stays in each page's own template. +@Directive() +export abstract class LegalPageBase { + protected lang = inject(LanguageService); + protected showDe = computed(() => this.lang.current() !== 'en'); + protected showEn = computed(() => this.lang.current() === 'en'); + protected showFallbackNotice = computed(() => !['de', 'en'].includes(this.lang.current())); +} diff --git a/src/app/components/legal/privacy.ts b/src/app/components/legal/privacy.ts index b265287..352c2a9 100644 --- a/src/app/components/legal/privacy.ts +++ b/src/app/components/legal/privacy.ts @@ -1,6 +1,6 @@ -import { Component, computed, inject } from '@angular/core'; +import { Component } from '@angular/core'; import { TranslatePipe } from '@ngx-translate/core'; -import { LanguageService } from '../../services/language'; +import { LegalPageBase } from './legal-page-base'; @Component({ selector: 'app-privacy', @@ -422,8 +422,4 @@ import { LanguageService } from '../../services/language'; `, }) -export class Privacy { - protected lang = inject(LanguageService); - protected showDe = computed(() => this.lang.current() !== 'en'); - protected showFallbackNotice = computed(() => !['de', 'en'].includes(this.lang.current())); -} +export class Privacy extends LegalPageBase {} diff --git a/src/app/components/legal/terms.ts b/src/app/components/legal/terms.ts index ca27cda..96ad4d8 100644 --- a/src/app/components/legal/terms.ts +++ b/src/app/components/legal/terms.ts @@ -1,6 +1,6 @@ -import { Component, computed, inject } from '@angular/core'; +import { Component } from '@angular/core'; import { TranslatePipe } from '@ngx-translate/core'; -import { LanguageService } from '../../services/language'; +import { LegalPageBase } from './legal-page-base'; @Component({ selector: 'app-terms', @@ -211,8 +211,4 @@ import { LanguageService } from '../../services/language'; `, }) -export class Terms { - protected lang = inject(LanguageService); - protected showDe = computed(() => this.lang.current() !== 'en'); - protected showFallbackNotice = computed(() => !['de', 'en'].includes(this.lang.current())); -} +export class Terms extends LegalPageBase {}