Skip to content
Snippets Groups Projects
app-init.ts 1.09 KiB
import { APP_INITIALIZER } from '@angular/core';
import { HttpClient } from '@angular/common/http';

import { KeycloakService } from 'keycloak-angular';
import { Store } from '@ngrx/store';

import { AppConfigService } from './app-config.service';
import { initializeKeycloak } from 'src/app/auth/init.keycloak';

import { environment } from 'src/environments/environment';

function appInit(http: HttpClient, appConfigService: AppConfigService, keycloak: KeycloakService, store: Store<{ }>) {
    return () => {
        return http.get(`${environment.apiUrl}/client-settings`)
            .toPromise()
            .then(data => {
                Object.assign(appConfigService, data);
                appConfigService.apiUrl = environment.apiUrl;
                return appConfigService;
            })
            .then(appConfigService => {
                return initializeKeycloak(keycloak, store, appConfigService)
            });
    }
}

export const appInitializer = {
    provide: APP_INITIALIZER,
    useFactory: appInit,
    multi: true,
    deps: [ HttpClient, AppConfigService, KeycloakService, Store ]
};