import { NgModule, Inject, APP_BOOTSTRAP_LISTENER, InjectionToken, Type, } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppCommonModule,AppCommonServiceModule,AuthConfigFactory } from '@farmmaps/common'; import { AppCommonMapModule} from '@farmmaps/common-map'; import {AppRootComponent} from './app.component'; import {StoreModule, Store} from '@ngrx/store'; import {EffectsModule, EffectSources} from '@ngrx/effects'; import { StoreRouterConnectingModule} from '@ngrx/router-store'; import {AppRoutingModule} from './app-routing.module'; import { LogoComponent } from './logo/logo.component'; import { MenuComponent } from './menu/menu.component'; import {RegisterDeviceComponent} from './registerdevice/registerdevice.component'; import { SecureOAuthStorage} from '@farmmaps/common'; import { OAuthStorage } from 'angular-oauth2-oidc'; import {Id4AuthconfigFactory} from './id4AuthconfigFactory'; export const BOOTSTRAP_EFFECTS = new InjectionToken('Bootstrap Effects'); export function bootstrapEffects(effects: Type[], sources: EffectSources) { return () => { effects.forEach(effect => sources.addEffects(effect)); }; } export function createInstances(...instances: any[]) { return instances; } export function provideBootstrapEffects(effects: Type[]) { return [ effects, {provide: BOOTSTRAP_EFFECTS, deps: effects, useFactory: createInstances}, { provide: APP_BOOTSTRAP_LISTENER, multi: true, useFactory: bootstrapEffects, deps: [[new Inject(BOOTSTRAP_EFFECTS)], EffectSources], }, ]; } @NgModule({ declarations: [ AppRootComponent, LogoComponent, MenuComponent, RegisterDeviceComponent ], imports: [ AppRoutingModule, AppCommonModule, AppCommonServiceModule.forRoot(), AppCommonMapModule.forRoot(), BrowserModule, StoreModule.forRoot({}), EffectsModule.forRoot([]) ], providers: [ AuthConfigFactory, { provide:OAuthStorage, useClass:SecureOAuthStorage } // { // provide:AuthConfigFactory, // useClass:LocalAuthconfigFactory // } ], bootstrap: [AppRootComponent] }) export class AppModule { }