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 1 year 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 { TitleStrategy } from '@angular/router';
import { import {
HTTP_INTERCEPTORS, HTTP_INTERCEPTORS,
@ -107,13 +107,16 @@ export function provideAbpCore(...features: CoreFeature<CoreFeatureKind>[]) {
}), }),
), ),
provideAppInitializer(() => { provideAppInitializer(() => {
getInitialData(); const injector = inject(Injector);
localeInitializer();
inject(LocalizationService); inject(LocalizationService);
inject(LocalStorageListenerService); inject(LocalStorageListenerService);
inject(RoutesHandler); inject(RoutesHandler);
}),
return (async (): Promise<void> => {
await getInitialData();
await localeInitializer(injector);
})();
}),
LocaleProvider, LocaleProvider,
CookieLanguageProvider, CookieLanguageProvider,
{ {

8
npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts

@ -52,10 +52,10 @@ export async function getInitialData() {
await lastValueFrom(result$); await lastValueFrom(result$);
} }
export function localeInitializer() { export function localeInitializer(injector?: Injector) {
const injector = inject(Injector); const currentInjector = injector || inject(Injector);
const sessionState = injector.get(SessionStateService); const sessionState = currentInjector.get(SessionStateService);
const { registerLocaleFn }: ABP.Root = injector.get(CORE_OPTIONS); const { registerLocaleFn }: ABP.Root = currentInjector.get(CORE_OPTIONS);
const lang = sessionState.getLanguage() || 'en'; const lang = sessionState.getLanguage() || 'en';

Loading…
Cancel
Save