Newer
Older
import {Component} from "@angular/core";
import {Router, RouterStateSnapshot} from "@angular/router";
import {ChangeAppLanguage, Logout} from "@app/app.action";
import {AppStateModel} from "@app/app.state";
import {BaseDirective} from "@app/shared/directives/base.directive";
import {LanguagesEnum} from "@app/shared/enums/languages.enum";
import {RoutesEnum, urlSeparator} from "@app/shared/enums/routes.enum";
import {StateEnum} from "@app/shared/enums/state.enum";
import {ThemeEnum} from "@app/shared/enums/theme.enum";
import {TranslateService} from "@ngx-translate/core";
import {Navigate, RouterStateModel} from "@ngxs/router-plugin";
import {Select, Store} from "@ngxs/store";
import {Observable} from "rxjs";
import {environment} from "../environments/environment";
import {OAuthService} from "@app/oauth/oauth-service";
selector: "dlcm-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.scss"],
export class AppComponent extends BaseDirective {

Florent Poittevin
committed
title = environment.appTitle;
@Select((state) => (state[StateEnum.router] as RouterStateModel).state) urlState$: Observable<RouterStateSnapshot>;

Florent Poittevin
committed
@Select((state) => (state[StateEnum.application] as AppStateModel).appLanguage) appLanguage$: Observable<LanguagesEnum>;
@Select((state) => (state[StateEnum.application] as AppStateModel).isLoggedIn) isLogged$: Observable<boolean>;
constructor(private store: Store,
private oauthService: OAuthService,

Florent Poittevin
committed
this.languageSwitcher();

Florent Poittevin
committed
useLanguage(language: LanguagesEnum): void {
// this.translate.use(language);
this.store.dispatch(new ChangeAppLanguage(language));
this.store.dispatch(new Navigate([route]));
}
if (environment.theme === ThemeEnum.yareta) {
return;
}
if (environment.theme === ThemeEnum.dlcm) {
private setCurrentModule() {
this.addToSubscription(
this.urlState$.subscribe(urlState => {
if (urlState) {
const url = urlState.url;
if (url.startsWith(urlSeparator + RoutesEnum.organizationalUnit)) {
this.currentModule = RoutesEnum.organizationalUnit;
return;
}
if (url.startsWith(urlSeparator + RoutesEnum.access)) {
this.currentModule = RoutesEnum.access;
return;
}
if (url.startsWith(urlSeparator + RoutesEnum.deposit)) {
this.currentModule = RoutesEnum.deposit;
return;
}
this.currentModule = null;
}
}),
);
}

Florent Poittevin
committed
private languageSwitcher() {
// TOFIX Should be in app.state.ts but does't work as expected inside this class
// (need 2 action ChangeLanguage to be take in consideration...)

Florent Poittevin
committed
this.addToSubscription(this.appLanguage$.subscribe((language: LanguagesEnum) => {
this.translate.use(language);
}));
}
logout() {
this.store.dispatch(new Logout());
}