From c8d1517703600f3642f8df8e02b8dc5cab748c09 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 4 Nov 2020 16:18:50 +0300 Subject: [PATCH] refactor: imprve the code quality --- .../core/locale/src/utils/register-locale.ts | 28 ++++++++----------- .../src/lib/services/localization.service.ts | 5 +++- .../core/src/lib/utils/initial-utils.ts | 7 ++++- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/npm/ng-packs/packages/core/locale/src/utils/register-locale.ts b/npm/ng-packs/packages/core/locale/src/utils/register-locale.ts index d69be0634a..36fef4965f 100644 --- a/npm/ng-packs/packages/core/locale/src/utils/register-locale.ts +++ b/npm/ng-packs/packages/core/locale/src/utils/register-locale.ts @@ -9,6 +9,8 @@ export interface LocaleErrorHandlerData { locale: string; } +let localeMap = {}; + export interface RegisterLocaleData { cultureNameLocaleFileMap: Record; errorHandlerFn: (data: LocaleErrorHandlerData) => any; @@ -21,27 +23,22 @@ export function registerLocale( } = {} as RegisterLocaleData, ) { return (locale: string): Promise => { - cultureNameLocaleFileMap = { ...differentLocales, ...cultureNameLocaleFileMap }; + localeMap = { ...differentLocales, ...cultureNameLocaleFileMap }; return new Promise((resolve, reject) => { return import( /* webpackChunkName: "_locale-[request]"*/ /* webpackInclude: /[/\\](ar|cs|en|fr|pt|tr|ru|hu|sl|zh-Hans|zh-Hant).js/ */ /* webpackExclude: /[/\\]global|extra/ */ - `@angular/common/locales/${cultureNameLocaleFileMap[locale] || locale}.js` - ) - .then(module => { - registerLocaleData(module.default, locale); - resolve(module.default); - }) - .catch(error => { - errorHandlerFn({ - resolve, - reject, - error, - locale, - }); + `@angular/common/locales/${localeMap[locale] || locale}.js` + ).catch(error => { + errorHandlerFn({ + resolve, + reject, + error, + locale, }); + }); }); }; } @@ -53,8 +50,7 @@ export function storeLocaleData(data: any, localeId: string) { export async function defaultLocalErrorHandlerFn({ locale, resolve }: LocaleErrorHandlerData) { if (extraLocales[locale]) { - registerLocaleData(extraLocales[locale], locale); - resolve(); + resolve({ default: extraLocales[localeMap[locale] || locale] }); return; } diff --git a/npm/ng-packs/packages/core/src/lib/services/localization.service.ts b/npm/ng-packs/packages/core/src/lib/services/localization.service.ts index c1cb09da17..6fdce35d07 100644 --- a/npm/ng-packs/packages/core/src/lib/services/localization.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/localization.service.ts @@ -1,3 +1,4 @@ +import { registerLocaleData } from '@angular/common'; import { Injectable, Injector, NgZone, Optional, SkipSelf } from '@angular/core'; import { ActivatedRouteSnapshot, Router } from '@angular/router'; import { Actions, ofActionSuccessful, Store } from '@ngxs/store'; @@ -54,7 +55,9 @@ export class LocalizationService { const { registerLocaleFn }: ABP.Root = this.injector.get(CORE_OPTIONS); - return registerLocaleFn(locale).then(() => { + return registerLocaleFn(locale).then(module => { + if (module?.default) registerLocaleData(module.default); + this.ngZone.run(async () => { await router.navigateByUrl(router.url).catch(noop); router.routeReuseStrategy.shouldReuseRoute = shouldReuseRoute; diff --git a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts index e7ffb986c0..cf7771c094 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts @@ -1,3 +1,4 @@ +import { registerLocaleData } from '@angular/common'; import { Injector } from '@angular/core'; import { Store } from '@ngxs/store'; import { OAuthService } from 'angular-oauth2-oidc'; @@ -46,7 +47,11 @@ export function localeInitializer(injector: Injector) { const lang = store.selectSnapshot(state => state.SessionState.language) || 'en'; return new Promise((resolve, reject) => { - registerLocaleFn(lang).then(() => resolve('resolved'), reject); + registerLocaleFn(lang).then(module => { + if (module?.default) registerLocaleData(module.default); + + return resolve('resolved'); + }, reject); }); };