From 602eafe169fa2abc731e22fda495ea941d6fe9f8 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 5 Aug 2020 19:32:12 +0300 Subject: [PATCH] feat: catch http errors when requesting remote config --- .../core/src/lib/utils/environment-utils.ts | 19 +++++++++++-------- .../core/src/lib/utils/initial-utils.ts | 3 +-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/utils/environment-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/environment-utils.ts index deb4d893e9..731d3c61d4 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/environment-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/environment-utils.ts @@ -1,21 +1,24 @@ import { HttpClient } from '@angular/common/http'; import { Injector } from '@angular/core'; import { Store } from '@ngxs/store'; +import { of } from 'rxjs'; +import { catchError, switchMap } from 'rxjs/operators'; import { SetEnvironment } from '../actions/config.actions'; import { Config } from '../models/config'; -export async function getRemoteEnv(injector: Injector, environment: Config.Environment) { +export function getRemoteEnv(injector: Injector, environment: Partial) { const { remoteEnv } = environment; - if (!remoteEnv?.url) return Promise.resolve(); + const { headers = {}, method = 'GET', url } = remoteEnv || ({} as Config.RemoteEnv); + if (!url) return Promise.resolve(); const http = injector.get(HttpClient); const store = injector.get(Store); - const env = await http - .request(remoteEnv.method || 'GET', remoteEnv.url, { - headers: remoteEnv.headers || {}, - }) + return http + .request(method, url, { headers }) + .pipe( + catchError(() => of({} as Config.Environment)), // TODO: Handle error + switchMap(env => store.dispatch(new SetEnvironment({ ...environment, ...env }))), + ) .toPromise(); - - return store.dispatch(new SetEnvironment({ ...environment, ...env })).toPromise(); } diff --git a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts index dd4a3bbc64..a79077b89d 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts @@ -9,14 +9,13 @@ import { ConfigState } from '../states/config.state'; import { CORE_OPTIONS } from '../tokens/options.token'; import { getRemoteEnv } from './environment-utils'; import { parseTenantFromUrl } from './multi-tenancy-utils'; -import { Config } from '../models/config'; export function getInitialData(injector: Injector) { const fn = async () => { const store: Store = injector.get(Store); const options = injector.get(CORE_OPTIONS) as ABP.Root; - await getRemoteEnv(injector, options.environment as Config.Environment); + await getRemoteEnv(injector, options.environment); await parseTenantFromUrl(injector); if (options.skipGetAppConfiguration) return;