diff --git a/apps/spa/src/app/app.module.ts b/apps/spa/src/app/app.module.ts index 6c580cba..73deb65a 100644 --- a/apps/spa/src/app/app.module.ts +++ b/apps/spa/src/app/app.module.ts @@ -1,12 +1,11 @@ import { registerLocaleData } from '@angular/common'; -import { HttpClient, HttpClientModule } from '@angular/common/http'; +import { HttpClientModule } from '@angular/common/http'; import de from '@angular/common/locales/de'; import { APP_INITIALIZER, NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouterModule } from '@angular/router'; import DOMPurify from 'dompurify'; import { NZ_I18N, de_DE } from 'ng-zorro-antd/i18n'; -import { firstValueFrom } from 'rxjs'; import { AuthModule, DevAuthModule } from '@kordis/spa/auth'; import { @@ -63,15 +62,6 @@ registerLocaleData(de); }, multi: true, }, - { - provide: APP_INITIALIZER, - useFactory: (http: HttpClient) => async () => { - const config = await firstValueFrom(http.get('./assets/config.json')); - Object.assign(environment, { ...config, ...environment }); - }, - deps: [HttpClient], - multi: true, - }, { provide: NZ_I18N, useValue: de_DE }, ], bootstrap: [AppComponent], diff --git a/apps/spa/src/environments/dynamic-config.model.ts b/apps/spa/src/environments/dynamic-config.model.ts new file mode 100644 index 00000000..f500d2b6 --- /dev/null +++ b/apps/spa/src/environments/dynamic-config.model.ts @@ -0,0 +1,11 @@ +import { AuthConfig } from 'angular-oauth2-oidc'; + +export interface DynamicConfig { + environmentName: string; + apiUrl: string; + sentryKey?: string; + oauth?: { + config: AuthConfig; + discoveryDocumentUrl: string; + }; +} diff --git a/apps/spa/src/environments/environment.ts b/apps/spa/src/environments/environment.ts index 79ae4b04..0f4c0039 100644 --- a/apps/spa/src/environments/environment.ts +++ b/apps/spa/src/environments/environment.ts @@ -1,18 +1,9 @@ -import { AuthConfig } from 'angular-oauth2-oidc'; +import { DynamicConfig } from './dynamic-config.model'; export const environment = { production: false, - releaseVersion: '0.0.0-development', } as { production: boolean; releaseVersion: string; - // following properties are from the runtime dependent assets/config.json - environmentName: string; - apiUrl: string; - sentryKey?: string; - oauth?: { - config: AuthConfig; - discoveryDocumentUrl: string; - }; -}; +} & DynamicConfig; // DynamicConfig properties are from the runtime dependent assets/config.json diff --git a/apps/spa/src/main.ts b/apps/spa/src/main.ts index 1daf81d5..d0b58277 100644 --- a/apps/spa/src/main.ts +++ b/apps/spa/src/main.ts @@ -1,8 +1,19 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; +import { DynamicConfig } from './environments/dynamic-config.model'; +import { environment } from './environments/environment'; -platformBrowserDynamic() - .bootstrapModule(AppModule) - // eslint-disable-next-line no-console - .catch((err) => console.error(err)); +fetch('./assets/config.json') + .then((response) => response.json()) + .then((config: unknown) => { + Object.assign(environment, { + ...(config as DynamicConfig), + ...environment, + }); + + platformBrowserDynamic() + .bootstrapModule(AppModule) + // eslint-disable-next-line no-console + .catch((err) => console.error(err)); + });