import { ApplicationConfig, importProvidersFrom, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; import { provideClientHydration, withEventReplay } from '@angular/platform-browser'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { HTTP_INTERCEPTORS, HttpClient, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { AuthInterceptor } from './shared/interceptors/auth.interceptor'; import { ToastrModule } from 'ngx-toastr'; import { provideAnimations } from '@angular/platform-browser/animations'; import { LoadingInterceptor } from './shared/interceptors/loading.interceptor'; export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); } export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes), provideClientHydration(withEventReplay()), provideHttpClient(withInterceptorsFromDi()), provideAnimations(), { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }, { provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true }, importProvidersFrom( TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient], }, }), ToastrModule.forRoot({ timeOut: 4000, positionClass: 'toast-top-right', newestOnTop: true, closeButton: true }), ) ] };