import { ApiRootService } from '@alfa-client/api-root-shared'; import { Environment, ENVIRONMENT_CONFIG } from '@alfa-client/environment-shared'; import { ResourceRepository, TechSharedModule } from '@alfa-client/tech-shared'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; import KcAdminClient from '@keycloak/keycloak-admin-client'; import { createSettingListResourceService, SettingListResourceService, } from './admin-settings-resource.service'; import { SettingsService } from './admin-settings.service'; import { ConfigurationResourceService, createConfigurationResourceService, } from './configuration/configuration-resource.service'; import { ConfigurationService } from './configuration/configuration.service'; import { NavigationComponent } from './navigation/navigation.component'; import { OrganisationseinheitContainerComponent } from './organisationseinheit/organisationseinheit-container/organisationseinheit-container.component'; import { OrganisationseinheitFormComponent } from './organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component'; import { OrganisationseinheitListComponent } from './organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component'; import { OrganisationseinheitNavigationItemComponent } from './organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component'; import { PostfachContainerComponent } from './postfach/postfach-container/postfach-container.component'; import { PostfachFormComponent } from './postfach/postfach-container/postfach-form/postfach-form.component'; import { PostfachNavigationItemComponent } from './postfach/postfach-navigation-item/postfach-navigation-item.component'; import { createPostfachResourceService, PostfachResourceService, } from './postfach/postfach-resource.service'; import { PostfachService } from './postfach/postfach.service'; import { MoreItemButtonComponent } from './shared/more-menu/more-item-button/more-item-button.component'; import { MoreMenuComponent } from './shared/more-menu/more-menu.component'; import { NavigationItemComponent } from './shared/navigation-item/navigation-item.component'; import { PrimaryButtonComponent } from './shared/primary-button/primary-button.component'; import { SecondaryButtonComponent } from './shared/secondary-button/secondary-button.component'; import { SpinnerComponent } from './shared/spinner/spinner.component'; import { TextFieldComponent } from './shared/text-field/text-field.component'; @NgModule({ declarations: [ PostfachContainerComponent, PostfachFormComponent, NavigationItemComponent, TextFieldComponent, PostfachNavigationItemComponent, OrganisationseinheitContainerComponent, OrganisationseinheitFormComponent, PrimaryButtonComponent, NavigationComponent, SecondaryButtonComponent, OrganisationseinheitNavigationItemComponent, OrganisationseinheitListComponent, MoreMenuComponent, MoreItemButtonComponent, SpinnerComponent, ], imports: [CommonModule, TechSharedModule, RouterModule, ReactiveFormsModule], exports: [ PostfachContainerComponent, OrganisationseinheitContainerComponent, NavigationComponent, NavigationItemComponent, ], providers: [ ConfigurationService, SettingsService, PostfachService, { provide: KcAdminClient, useFactory: (env: Environment) => new KcAdminClient({ baseUrl: env.authServer, realmName: env.realm, }), deps: [ENVIRONMENT_CONFIG], }, { provide: PostfachResourceService, useFactory: createPostfachResourceService, deps: [ResourceRepository, SettingsService], }, { provide: ConfigurationResourceService, useFactory: createConfigurationResourceService, deps: [ResourceRepository, ApiRootService], }, { provide: SettingListResourceService, useFactory: createSettingListResourceService, deps: [ResourceRepository, ConfigurationService], }, ], }) export class AdminSettingsModule {}