feat: catch http errors when requesting remote config

pull/4968/head
Arman Ozak 5 years ago
parent 3d8c72727b
commit 602eafe169

@ -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<Config.Environment>) {
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<Config.Environment>(remoteEnv.method || 'GET', remoteEnv.url, {
headers: remoteEnv.headers || {},
})
return http
.request<Config.Environment>(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();
}

@ -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;

Loading…
Cancel
Save