|
- import {ChangeDetectorRef, Component, Inject, OnInit, Renderer2} from '@angular/core';
- import {AccountService} from './_services';
- import {User} from './_models';
- import {TranslateService} from "@ngx-translate/core";
- import {environment} from "@environments/environment";
- import {Subscription} from "rxjs";
- import {LoadingService} from "@app/_services/loading.service";
- import {DOCUMENT} from "@angular/common";
-
- @Component({
- selector: 'app-root',
- templateUrl: 'app.component.html',
- styleUrl: 'app.component.scss'
- })
- export class AppComponent implements OnInit {
- protected readonly environment = environment;
- protected user?: User | null;
- protected loadingSub: Subscription;
- protected loading: boolean = false;
- protected isLeftHanded = false;
- protected isDarkMode = false;
-
- constructor(
- private accountService: AccountService,
- private translate: TranslateService,
- private loadingService: LoadingService,
- private cdr: ChangeDetectorRef,
- private renderer: Renderer2,
- @Inject(DOCUMENT) private document: Document
- ) {
- translate.setDefaultLang('en');
- translate.use('en');
- this.accountService.user.subscribe(x => this.user = x);
- this.loadingSub = new Subscription();
- this.isLeftHanded = localStorage.getItem('isLeftHanded') === 'true';
- this.isDarkMode = localStorage.getItem('isDarkMode') === 'true';
- this.updateLeftHandedState();
- this.updateDarkModeState();
- }
-
- ngOnInit(): void {
- this.loadingSub = this.loadingService.getLoading().subscribe(
- loading => {
- this.loading = loading;
- // To avoid Error: NG0100
- this.cdr.detectChanges();
- }
- );
- }
-
- logout() {
- this.accountService.logout();
- }
-
- // TODO: Hilfsfunktion - entfernen
- copyTokenToClipboard() {
- const el = document.createElement('textarea');
- el.value = this.user?.token !== undefined ? this.user.token : "";
- document.body.appendChild(el);
- el.select();
- document.execCommand('copy');
- document.body.removeChild(el);
- }
-
- // For our left handed friends
- leftHanded() {
- this.isLeftHanded = !this.isLeftHanded;
- this.updateLeftHandedState();
- }
-
- private updateLeftHandedState() {
- if (this.isLeftHanded) {
- this.renderer.addClass(this.document.body, 'left-handed');
- } else {
- this.renderer.removeClass(this.document.body, 'left-handed');
- }
-
- // Save the state to localStorage
- localStorage.setItem('isLeftHanded', this.isLeftHanded.toString());
- }
-
- darkMode() {
- this.isDarkMode = !this.isDarkMode;
- this.updateDarkModeState();
- }
-
- private updateDarkModeState() {
- if (this.isDarkMode) {
- this.renderer.addClass(this.document.body, 'dark-mode');
- } else {
- this.renderer.removeClass(this.document.body, 'dark-mode');
- }
-
- // Save the state to localStorage
- localStorage.setItem('isDarkMode', this.isDarkMode.toString());
- }
-
- get buttonClassLefties(): string {
- return this.isLeftHanded ? 'btn-primary' : 'btn-secondary';
- }
-
- get buttonClassDarkMode(): string {
- return this.isDarkMode ? 'btn-primary' : 'btn-secondary';
- }
- }
|