Files
LoreMind/web/src/main.ts

46 lines
2.1 KiB
TypeScript

import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { PreloadAllModules, provideRouter, withPreloading } from '@angular/router';
import { routes } from './app/app.routes';
import { provideHttpClient, withInterceptors } from '@angular/common/http';
import { APP_INITIALIZER, provideZoneChangeDetection } from '@angular/core';
import { provideTranslateService } from '@ngx-translate/core';
import { provideTranslateHttpLoader } from '@ngx-translate/http-loader';
import { ConfigService } from './app/services/config.service';
import { LanguageService } from './app/services/language.service';
import { sessionExpiredInterceptor } from './app/interceptors/session-expired.interceptor';
import { languageInterceptor } from './app/interceptors/language.interceptor';
// withPreloading(PreloadAllModules) : une fois l'app initiale rendue, Angular
// telecharge en arriere-plan tous les chunks lazy-loades. Consequence : la
// premiere visite d'une route ne declenche plus de download runtime, elle
// ouvre instantanement. Cout : un peu plus de bande passante au demarrage
// (acceptable pour une app interne ou toutes les routes seront visitees).
bootstrapApplication(AppComponent, {
providers: [
provideZoneChangeDetection(),provideRouter(routes, withPreloading(PreloadAllModules)),
provideHttpClient(withInterceptors([sessionExpiredInterceptor, languageInterceptor])),
provideTranslateService({
loader: provideTranslateHttpLoader({
prefix: 'assets/i18n/',
suffix: '.json',
}),
fallbackLang: 'fr',
}),
{
provide: APP_INITIALIZER,
useFactory: (config: ConfigService) => () => config.load(),
deps: [ConfigService],
multi: true,
},
{
// Applique la langue (localStorage → navigateur → fr) et précharge le JSON
// correspondant avant le premier rendu, pour éviter un flash de clés brutes.
provide: APP_INITIALIZER,
useFactory: (lang: LanguageService) => () => lang.init(),
deps: [LanguageService],
multi: true,
},
],
}).catch((err: Error) => console.error(err));