Browse Source

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.
pull/23408/head
Fahri Gedik 10 months ago
parent
commit
341707264b
  1. 11
      npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts
  2. 8
      npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts

11
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<CoreFeatureKind>[]) {
}),
),
provideAppInitializer(() => {
getInitialData();
localeInitializer();
const injector = inject(Injector);
inject(LocalizationService);
inject(LocalStorageListenerService);
inject(RoutesHandler);
}),
return (async (): Promise<void> => {
await getInitialData();
await localeInitializer(injector);
})();
}),
LocaleProvider,
CookieLanguageProvider,
{

8
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';

Loading…
Cancel
Save