import { APP_INITIALIZER, ApplicationConfig, ErrorHandler } from '@angular/core'; import { provideRouter, withEnabledBlockingInitialNavigation, withInMemoryScrolling } from '@angular/router'; import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; import { initializeApp, provideFirebaseApp } from '@angular/fire/app'; import { getAuth, provideAuth } from '@angular/fire/auth'; import { provideAnimations } from '@angular/platform-browser/animations'; import { GALLERY_CONFIG, GalleryConfig } from 'ng-gallery'; import { provideQuillConfig } from 'ngx-quill'; import { provideShareButtonsOptions, SharerMethods, withConfig } from 'ngx-sharebuttons'; import { shareIcons } from 'ngx-sharebuttons/icons'; import { provideNgxStripe } from 'ngx-stripe'; import { environment } from '../environments/environment'; import { routes } from './app.routes'; import { AuthInterceptor } from './interceptors/auth.interceptor'; import { LoadingInterceptor } from './interceptors/loading.interceptor'; import { TimeoutInterceptor } from './interceptors/timeout.interceptor'; import { GlobalErrorHandler } from './services/globalErrorHandler'; import { SelectOptionsService } from './services/select-options.service'; import { createLogger } from './utils/utils'; // provideClientHydration() const logger = createLogger('ApplicationConfig'); export const appConfig: ApplicationConfig = { providers: [ provideHttpClient(withInterceptorsFromDi()), { provide: APP_INITIALIZER, useFactory: initServices, multi: true, deps: [SelectOptionsService], }, { provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true, }, { provide: HTTP_INTERCEPTORS, useClass: TimeoutInterceptor, multi: true, }, { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }, { provide: 'TIMEOUT_DURATION', useValue: 5000, // Standard-Timeout von 5 Sekunden }, { provide: GALLERY_CONFIG, useValue: { autoHeight: true, imageSize: 'cover', } as GalleryConfig, }, { provide: ErrorHandler, useClass: GlobalErrorHandler }, // Registriere den globalen ErrorHandler provideShareButtonsOptions( shareIcons(), withConfig({ debug: true, sharerMethod: SharerMethods.Anchor, }), ), provideRouter( routes, withEnabledBlockingInitialNavigation(), withInMemoryScrolling({ scrollPositionRestoration: 'enabled', anchorScrolling: 'enabled', }), ), provideAnimations(), provideNgxStripe('pk_test_IlpbVQhxAXZypLgnCHOCqlj8'), provideQuillConfig({ modules: { syntax: true, toolbar: [ ['bold', 'italic', 'underline'], // Einige Standardoptionen [{ header: [1, 2, 3, false] }], // Benutzerdefinierte Header [{ list: 'ordered' }, { list: 'bullet' }], [{ color: [] }], // Dropdown mit Standardfarben ['clean'], // Entfernt Formatierungen ], }, }), provideFirebaseApp(() => initializeApp(environment.firebaseConfig)), provideAuth(() => getAuth()), // provideFirestore(() => getFirestore()), ], }; function initServices(selectOptions: SelectOptionsService) { return async () => { await selectOptions.init(); }; }