mirror of https://github.com/abpframework/abp.git
2 changed files with 12 additions and 10 deletions
@ -1,21 +1,24 @@ |
|||||
import { HttpClient } from '@angular/common/http'; |
import { HttpClient } from '@angular/common/http'; |
||||
import { Injector } from '@angular/core'; |
import { Injector } from '@angular/core'; |
||||
import { Store } from '@ngxs/store'; |
import { Store } from '@ngxs/store'; |
||||
|
import { of } from 'rxjs'; |
||||
|
import { catchError, switchMap } from 'rxjs/operators'; |
||||
import { SetEnvironment } from '../actions/config.actions'; |
import { SetEnvironment } from '../actions/config.actions'; |
||||
import { Config } from '../models/config'; |
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; |
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 http = injector.get(HttpClient); |
||||
const store = injector.get(Store); |
const store = injector.get(Store); |
||||
|
|
||||
const env = await http |
return http |
||||
.request<Config.Environment>(remoteEnv.method || 'GET', remoteEnv.url, { |
.request<Config.Environment>(method, url, { headers }) |
||||
headers: remoteEnv.headers || {}, |
.pipe( |
||||
}) |
catchError(() => of({} as Config.Environment)), // TODO: Handle error
|
||||
|
switchMap(env => store.dispatch(new SetEnvironment({ ...environment, ...env }))), |
||||
|
) |
||||
.toPromise(); |
.toPromise(); |
||||
|
|
||||
return store.dispatch(new SetEnvironment({ ...environment, ...env })).toPromise(); |
|
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue