import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { AuthService } from '@app/core/services/auth/auth.service'; import { LanguageService } from '@app/core/services/language/language.service'; import { UserService } from '@app/core/services/user/user.service'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '@common/base/base.component'; const availableLanguages: any[] = require('../../../../assets/resources/language.json'); @Component({ selector: 'app-language', templateUrl: './language.component.html', styleUrls: ['./language.component.scss'] }) export class LanguageComponent extends BaseComponent implements OnInit { languages = availableLanguages; constructor( private router: Router, private authentication: AuthService, private languageService: LanguageService, private userService: UserService ) { super(); } ngOnInit() { } public isAuthenticated(): boolean { return !(!this.authentication.current()); } public getCurrentLanguage(): any { const lang = this.languages.find(lang => lang.value === this.languageService.getCurrentLanguage()); return lang; } onLanguageSelected(selectedLanguage: any) { if (this.isAuthenticated()) { const langMap = new Map(); langMap.set('language', selectedLanguage.value); this.userService.updateUserSettings({language: this.languages.find(lang => lang.value === selectedLanguage.value)}) .pipe(takeUntil(this._destroyed)) .subscribe((response) => { this.languageService.changeLanguage(selectedLanguage.value); this.authentication.me() .pipe(takeUntil(this._destroyed)) .subscribe ( innerResponse => {this.router.navigateByUrl(this.router.url);}); }, error => { console.log(error); }); } else { this.languageService.changeLanguage(selectedLanguage.value); this.router.navigateByUrl(this.router.url); } } }