103 lines
3.2 KiB
TypeScript
103 lines
3.2 KiB
TypeScript
import { APP_INITIALIZER, ErrorHandler, NgModule } from "@angular/core";
|
|
import { BrowserModule } from "@angular/platform-browser";
|
|
|
|
import { AppRoutingModule } from "./app-routing.module";
|
|
import { AppComponent } from "./app.component";
|
|
import { KeycloakService } from "keycloak-angular";
|
|
import { initializeKeycloak } from "./core/init-keycloak";
|
|
import { HttpClient } from "@angular/common/http";
|
|
import { environment } from "../environments/environment";
|
|
import { FooterComponent } from "src/app/components/footer/footer.component";
|
|
import { HeaderComponent } from "src/app/components/header/header.component";
|
|
import { NotFoundComponent } from "src/app/components/error/not-found/not-found.component";
|
|
import { TranslateLoader, TranslateModule } from "@ngx-translate/core";
|
|
import { TranslateHttpLoader } from "@ngx-translate/http-loader";
|
|
import { Logger } from "src/app/service/logger.service";
|
|
import { SharedModule } from "src/app/modules/shared/shared.module";
|
|
import { SpinnerComponent } from "src/app/components/spinner/spinner.component";
|
|
import { ConfirmationService, MessageService } from "primeng/api";
|
|
import { DialogService } from "primeng/dynamicdialog";
|
|
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
|
|
import { SidebarComponent } from "./components/sidebar/sidebar.component";
|
|
import { ErrorHandlingService } from "src/app/service/error-handling.service";
|
|
import { HomeComponent } from "./components/home/home.component";
|
|
import { RedirectComponent } from "./components/redirect/redirect.component";
|
|
import { SettingsService } from "src/app/service/settings.service";
|
|
import { LogoutComponent } from './components/logout/logout.component';
|
|
|
|
if (environment.production) {
|
|
Logger.enableProductionMode();
|
|
} else {
|
|
Logger.enableDevMode();
|
|
}
|
|
|
|
export function HttpLoaderFactory(http: HttpClient) {
|
|
return new TranslateHttpLoader(http);
|
|
}
|
|
|
|
export function appInitializerFactory(
|
|
keycloak: KeycloakService,
|
|
settings: SettingsService,
|
|
): () => Promise<void> {
|
|
return (): Promise<void> =>
|
|
new Promise<void>((resolve, reject) => {
|
|
settings
|
|
.loadSettings()
|
|
.then(() => initializeKeycloak(keycloak, settings))
|
|
.then(() => resolve())
|
|
.catch((error) => reject(error));
|
|
});
|
|
}
|
|
|
|
@NgModule({
|
|
declarations: [
|
|
AppComponent,
|
|
FooterComponent,
|
|
HeaderComponent,
|
|
NotFoundComponent,
|
|
SpinnerComponent,
|
|
SidebarComponent,
|
|
HomeComponent,
|
|
RedirectComponent,
|
|
LogoutComponent,
|
|
],
|
|
imports: [
|
|
BrowserModule,
|
|
BrowserAnimationsModule,
|
|
AppRoutingModule,
|
|
SharedModule,
|
|
TranslateModule.forRoot({
|
|
defaultLanguage: "en",
|
|
loader: {
|
|
provide: TranslateLoader,
|
|
useFactory: HttpLoaderFactory,
|
|
deps: [HttpClient],
|
|
},
|
|
}),
|
|
],
|
|
exports: [
|
|
BrowserModule,
|
|
BrowserAnimationsModule,
|
|
SharedModule,
|
|
AppRoutingModule,
|
|
],
|
|
providers: [
|
|
MessageService,
|
|
ConfirmationService,
|
|
DialogService,
|
|
KeycloakService,
|
|
{
|
|
provide: APP_INITIALIZER,
|
|
useFactory: appInitializerFactory,
|
|
multi: true,
|
|
deps: [KeycloakService, SettingsService],
|
|
},
|
|
{
|
|
provide: ErrorHandler,
|
|
useClass: ErrorHandlingService,
|
|
},
|
|
],
|
|
bootstrap: [AppComponent],
|
|
})
|
|
export class AppModule {}
|