From 341707264bcc1c9b5c44397883f9bfa4ccde68d9 Mon Sep 17 00:00:00 2001 From: Fahri Gedik Date: Mon, 28 Jul 2025 23:31:07 +0300 Subject: [PATCH] Refactor locale initialization to support async and injector Updated provideAppInitializer to use an async function and pass the Injector to localeInitializer. Modified localeInitializer to accept an optional Injector parameter for improved flexibility and testability. --- .../src/lib/providers/core-module-config.provider.ts | 11 +++++++---- .../packages/core/src/lib/utils/initial-utils.ts | 8 ++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts b/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts index fafb51ff6d..3ebe64360f 100644 --- a/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts +++ b/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts @@ -1,4 +1,4 @@ -import { makeEnvironmentProviders, Provider, inject, provideAppInitializer } from '@angular/core'; +import { makeEnvironmentProviders, Provider, provideAppInitializer, inject, Injector } from '@angular/core'; import { TitleStrategy } from '@angular/router'; import { HTTP_INTERCEPTORS, @@ -107,13 +107,16 @@ export function provideAbpCore(...features: CoreFeature[]) { }), ), provideAppInitializer(() => { - getInitialData(); - localeInitializer(); + const injector = inject(Injector); inject(LocalizationService); inject(LocalStorageListenerService); inject(RoutesHandler); - }), + return (async (): Promise => { + await getInitialData(); + await localeInitializer(injector); + })(); + }), LocaleProvider, CookieLanguageProvider, { 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 3bc9b6f2b5..254d61896d 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 @@ -52,10 +52,10 @@ export async function getInitialData() { await lastValueFrom(result$); } -export function localeInitializer() { - const injector = inject(Injector); - const sessionState = injector.get(SessionStateService); - const { registerLocaleFn }: ABP.Root = injector.get(CORE_OPTIONS); +export function localeInitializer(injector?: Injector) { + const currentInjector = injector || inject(Injector); + const sessionState = currentInjector.get(SessionStateService); + const { registerLocaleFn }: ABP.Root = currentInjector.get(CORE_OPTIONS); const lang = sessionState.getLanguage() || 'en';