RED-4718: use lang service from common-ui

This commit is contained in:
Dan Percic 2022-07-25 22:11:07 +03:00
parent 9d21a4c162
commit a61f753756
5 changed files with 17 additions and 79 deletions

View File

@ -7,7 +7,18 @@ import { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from '@angular/common
import { BaseScreenComponent } from '@components/base-screen/base-screen.component';
import { ApiPathInterceptor } from '@utils/api-path-interceptor';
import { MissingTranslationHandler, TranslateCompiler, TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { LanguageService } from '@i18n/language.service';
import {
BASE_HREF,
CachingModule,
HELP_DOCS,
IqserHelpModeModule,
LanguageService,
MANUAL_BASE_URL,
MAX_RETRIES_ON_SERVER_ERROR,
SERVER_ERROR_SKIP_PATHS,
ServerErrorInterceptor,
ToastComponent,
} from '@iqser/common-ui';
import { ToastrModule } from 'ngx-toastr';
import { ServiceWorkerModule } from '@angular/service-worker';
import { environment } from '@environments/environment';
@ -30,17 +41,6 @@ import { SpotlightSearchComponent } from '@components/spotlight-search/spotlight
import { PruningTranslationLoader } from '@utils/pruning-translation-loader';
import { DatePipe } from '@shared/pipes/date.pipe';
import * as links from '../assets/help-mode/links.json';
import {
BASE_HREF,
CachingModule,
HELP_DOCS,
IqserHelpModeModule,
MANUAL_BASE_URL,
MAX_RETRIES_ON_SERVER_ERROR,
SERVER_ERROR_SKIP_PATHS,
ServerErrorInterceptor,
ToastComponent,
} from '@iqser/common-ui';
import { KeycloakService } from 'keycloak-angular';
import { GeneralSettingsService } from '@services/general-settings.service';
import { BreadcrumbsComponent } from '@components/breadcrumbs/breadcrumbs.component';

View File

@ -1,61 +0,0 @@
import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { UserPreferenceService } from '@services/user-preference.service';
import { firstValueFrom } from 'rxjs';
import 'dayjs/locale/en';
import 'dayjs/locale/de';
import dayjs, { Dayjs } from 'dayjs';
import { DateAdapter } from '@angular/material/core';
import arraySupport from 'dayjs/plugin/arraySupport';
import localeData from 'dayjs/plugin/localeData';
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
dayjs.extend(arraySupport);
dayjs.extend(localeData);
@Injectable({
providedIn: 'root',
})
export class LanguageService {
constructor(
private readonly _translateService: TranslateService,
private readonly _userPreferenceService: UserPreferenceService,
private readonly _dateAdapter: DateAdapter<Dayjs>,
) {
registerLocaleData(localeDe);
_translateService.addLangs(['en', 'de']);
_translateService.setDefaultLang('en');
}
get currentLanguage() {
return this._translateService.currentLang;
}
async setLanguage(locale: string): Promise<void> {
dayjs.locale(locale);
this._dateAdapter.setLocale(locale);
await firstValueFrom(this._translateService.use(locale));
}
languageAvailable(language: string): boolean {
return this._translateService.getLangs().includes(language);
}
async chooseAndSetInitialLanguage(): Promise<void> {
let defaultLang = 'en';
const userPreferenceLang = this._userPreferenceService.getLanguage();
if (this.languageAvailable(userPreferenceLang)) {
defaultLang = userPreferenceLang;
}
document.documentElement.lang = defaultLang;
this._translateService.setDefaultLang(defaultLang);
await this.setLanguage(defaultLang);
}
async changeLanguage(language: string) {
await this._userPreferenceService.saveLanguage(language);
document.documentElement.lang = language;
await this.setLanguage(language);
}
}

View File

@ -2,13 +2,12 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { BaseFormComponent, LoadingService } from '@iqser/common-ui';
import { BaseFormComponent, LanguageService, LoadingService } from '@iqser/common-ui';
import { IProfile } from '@red/domain';
import { languagesTranslations } from '@translations/languages-translations';
import { PermissionsService } from '@services/permissions.service';
import { UserService } from '@services/user.service';
import { ConfigService } from '@services/config.service';
import { LanguageService } from '../../../../../i18n/language.service';
import { firstValueFrom } from 'rxjs';
import { UserPreferenceService } from '@services/user-preference.service';
@ -76,7 +75,7 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI
this._loadingService.start();
if (this.languageChanged) {
await this._languageService.changeLanguage(this.form.get('language').value);
await this._languageService.change(this.form.get('language').value);
}
if (this.profileChanged) {

View File

@ -4,7 +4,7 @@ import { Title } from '@angular/platform-browser';
import { firstValueFrom, from, map, of, throwError } from 'rxjs';
import { KeycloakEventType, KeycloakService } from 'keycloak-angular';
import { GeneralSettingsService } from '@services/general-settings.service';
import { LanguageService } from '@i18n/language.service';
import { LanguageService } from '@iqser/common-ui';
import { UserPreferenceService } from '@services/user-preference.service';
import { UserService } from '@services/user.service';
import { FeaturesService } from '@services/features.service';
@ -51,7 +51,7 @@ export function configurationInitializer(
tap(() => {
lastDossierTemplateRedirect(baseHref.replace('/', ''), userPreferenceService);
}),
switchMap(() => languageService.chooseAndSetInitialLanguage()),
switchMap(() => languageService.setInitialLanguage()),
tap(() => userService.initialize()),
switchMap(() => licenseService.loadLicense()),
take(1),

@ -1 +1 @@
Subproject commit 884df60cb8df2af2b70e8dfc6dc8435b7cb5d260
Subproject commit 9c2c429df35245d208705c70d97f648ea1c39ac6