From a61f753756b8b4cd6a12b9a2ccd993862f06ca34 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Mon, 25 Jul 2022 22:11:07 +0300 Subject: [PATCH] RED-4718: use lang service from common-ui --- apps/red-ui/src/app/app.module.ts | 24 ++++---- apps/red-ui/src/app/i18n/language.service.ts | 61 ------------------- .../user-profile-screen.component.ts | 5 +- .../app/utils/configuration.initializer.ts | 4 +- libs/common-ui | 2 +- 5 files changed, 17 insertions(+), 79 deletions(-) delete mode 100644 apps/red-ui/src/app/i18n/language.service.ts diff --git a/apps/red-ui/src/app/app.module.ts b/apps/red-ui/src/app/app.module.ts index 9e674fb86..b4de072c0 100644 --- a/apps/red-ui/src/app/app.module.ts +++ b/apps/red-ui/src/app/app.module.ts @@ -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'; diff --git a/apps/red-ui/src/app/i18n/language.service.ts b/apps/red-ui/src/app/i18n/language.service.ts deleted file mode 100644 index a22a83286..000000000 --- a/apps/red-ui/src/app/i18n/language.service.ts +++ /dev/null @@ -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, - ) { - registerLocaleData(localeDe); - _translateService.addLangs(['en', 'de']); - _translateService.setDefaultLang('en'); - } - - get currentLanguage() { - return this._translateService.currentLang; - } - - async setLanguage(locale: string): Promise { - 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 { - 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); - } -} diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts index af9648942..bd65107f8 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts @@ -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) { diff --git a/apps/red-ui/src/app/utils/configuration.initializer.ts b/apps/red-ui/src/app/utils/configuration.initializer.ts index d39a23ebd..202206cfd 100644 --- a/apps/red-ui/src/app/utils/configuration.initializer.ts +++ b/apps/red-ui/src/app/utils/configuration.initializer.ts @@ -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), diff --git a/libs/common-ui b/libs/common-ui index 884df60cb..9c2c429df 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 884df60cb8df2af2b70e8dfc6dc8435b7cb5d260 +Subproject commit 9c2c429df35245d208705c70d97f648ea1c39ac6