argos/dmp-frontend/src/app/ui/language/language-content/language.component.ts

68 lines
2.3 KiB
TypeScript
Raw Normal View History

2023-12-29 16:04:16 +01:00
import { Component, EventEmitter, OnInit, Output } from '@angular/core';
import { MatButtonToggleChange } from '@angular/material/button-toggle';
import { Router } from '@angular/router';
import { AuthService } from '@app/core/services/auth/auth.service';
import { LanguageService } from '@app/core/services/language/language.service';
2023-11-29 14:26:40 +01:00
import { UserService } from '@app/core/services/user/user.service';
2023-12-29 16:04:16 +01:00
import { BaseComponent } from '@common/base/base.component';
@Component({
selector: 'app-language',
templateUrl: './language.component.html',
styleUrls: ['./language.component.scss']
})
export class LanguageComponent extends BaseComponent implements OnInit {
@Output() languageChange: EventEmitter<any> = new EventEmitter();
2023-11-29 14:26:40 +01:00
languages: string[] = [];
constructor(
private router: Router,
private authentication: AuthService,
2023-11-29 14:26:40 +01:00
private userService: UserService,
private languageService: LanguageService
2023-02-11 13:38:13 +01:00
) {
super();
2023-11-29 14:26:40 +01:00
this.languages = this.languageService.getAvailableLanguagesCodes();
2023-02-11 13:38:13 +01:00
}
ngOnInit() {
2023-11-29 14:26:40 +01:00
this.languageChange.emit(this.getCurrentLanguage())
}
public isAuthenticated(): boolean {
2023-10-11 16:53:12 +02:00
return this.authentication.currentAccountIsAuthenticated();
}
2023-11-29 14:26:40 +01:00
public getCurrentLanguage(): string {
const lang = this.languages.find(lang => lang === this.languageService.getCurrentLanguage());
return lang;
}
2023-11-29 14:26:40 +01:00
onLanguageSelected(selectedLanguage: MatButtonToggleChange) {
if (this.isAuthenticated()) {
const langMap = new Map<string, string>();
langMap.set('language', selectedLanguage.value);
2023-11-29 14:26:40 +01:00
//TODO: refactor - save language selection to user profile
// this.userService.updateUserSettings({ language: this.languages.find(lang => lang === selectedLanguage.value) })
// .pipe(takeUntil(this._destroyed))
// .subscribe((response) => {
// this.languageService.changeLanguage(selectedLanguage.value);
// this.authentication.refresh()
// .pipe(takeUntil(this._destroyed))
// .subscribe(innerResponse => { this.router.navigateByUrl(this.router.url); });
// },
// error => {
// console.log(error);
// });
this.languageService.changeLanguage(selectedLanguage.value);
this.router.navigateByUrl(this.router.url);
} else {
this.languageService.changeLanguage(selectedLanguage.value);
this.router.navigateByUrl(this.router.url);
}
this.languageChange.emit(selectedLanguage.value);
}
}