Skip to content
Snippets Groups Projects
app.module.ts 3.5 KiB
Newer Older
import { NgModule, APP_INITIALIZER } from '@angular/core';
import { AppComponent } from './app.component';
import { RegisterComponent } from './components/home/_dialogs/register/register.component';
import { PasswordResetComponent } from './components/home/_dialogs/password-reset/password-reset.component';
import { AppRoutingModule } from './app-routing.module';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { UserService } from './services/http/user.service';
import { NotificationService } from './services/util/notification.service';
import { AuthenticationService } from './services/http/authentication.service';
import { AuthenticationGuard } from './guards/authentication.guard';
import { RoomService } from './services/http/room.service';
import { CommentService } from './services/http/comment.service';
import { DataStoreService } from './services/util/data-store.service';
import { ContentService } from './services/http/content.service';
import { ContentAnswerService } from './services/http/content-answer.service';
import { UserActivationComponent } from './components/home/_dialogs/user-activation/user-activation.component';
import { AuthenticationInterceptor } from './interceptors/authentication.interceptor';
import { EssentialsModule } from './components/essentials/essentials.module';
import { SharedModule } from './components/shared/shared.module';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { LanguageService } from './services/util/language.service';
import { MarkdownService, MarkedOptions } from 'ngx-markdown';
import { NewLandingComponent } from './components/home/new-landing/new-landing.component';
import { HomePageComponent } from './components/home/home-page/home-page.component';
Tom Käsler's avatar
Tom Käsler committed
import { InjectableRxStompConfig, RxStompService, rxStompServiceFactory } from '@stomp/ng2-stompjs';
import { myRxStompConfig } from './rx-stomp.config';
import { AppConfig } from './app.config';
Tom Käsler's avatar
Tom Käsler committed

Tom Käsler's avatar
Tom Käsler committed
export function dialogClose(dialogResult: any) {
}

export function initializeApp(appConfig: AppConfig) {
  return () => appConfig.load();
}

@NgModule({
  declarations: [
    AppComponent,
    PasswordResetComponent,
    UserActivationComponent,
    NewLandingComponent,
    HomePageComponent
  entryComponents: [
    RegisterComponent,
    UserActivationComponent
  imports: [
    AppRoutingModule,
Lukas Mauß's avatar
Lukas Mauß committed
    BrowserModule,
    BrowserAnimationsModule,
    EssentialsModule,
    SharedModule
  providers: [
    AppConfig,
    { provide: APP_INITIALIZER,
      useFactory: initializeApp,
      deps: [AppConfig], multi: true
    },
    {
      provide: HTTP_INTERCEPTORS,
      useClass: AuthenticationInterceptor,
      multi: true
    },
Tom Käsler's avatar
Tom Käsler committed
    {
      provide: InjectableRxStompConfig,
      useValue: myRxStompConfig
    },
    {
      provide: RxStompService,
      useFactory: rxStompServiceFactory,
      deps: [InjectableRxStompConfig]
    },
    NotificationService,
    AuthenticationService,
Thomas Lenz's avatar
Thomas Lenz committed
    AuthenticationGuard,
David Noah Donges's avatar
David Noah Donges committed
    DataStoreService,
Hagen Dreßler's avatar
Hagen Dreßler committed
    RoomService,
    CommentService,
    ContentAnswerService,
    LanguageService,
    MarkdownService,
    MarkedOptions,
    UserService,
    {
      provide: MatDialogRef,
      useValue: {
Tom Käsler's avatar
Tom Käsler committed
        dialogClose
      }
    },
    {
      provide: MAT_DIALOG_DATA,
      useValue: []
    }
  bootstrap: [AppComponent]
})
export class AppModule {
}