From 5b95c70b2567216caa6a90af56a98e8b84b7284b Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 11 Nov 2020 14:53:01 +0300 Subject: [PATCH] feat: create environment.service --- .../src/lib/services/environment.service.ts | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/services/environment.service.ts diff --git a/npm/ng-packs/packages/core/src/lib/services/environment.service.ts b/npm/ng-packs/packages/core/src/lib/services/environment.service.ts new file mode 100644 index 0000000000..3f6c715406 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/environment.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { Apis, Environment } from '../models/environment'; +import { InternalStore } from '../utils/internal-store-utils'; + +@Injectable({ providedIn: 'root' }) +export class EnvironmentService { + private readonly store = new InternalStore({} as Environment); + + get onUpdate$() { + return this.store.sliceUpdate; + } + + getEnvironment$(): Observable { + return this.store.sliceState(state => state); + } + + getEnvironment(): Environment { + return this.store.state; + } + + getApiUrl(key?: string) { + return (this.store.state.apis[key || 'default'] || this.store.state.apis.default).url; + } + + getApiUrl$(key?: string) { + return this.store + .sliceState(state => state.apis) + .pipe(map((apis: Apis) => (apis[key || 'default'] || apis.default).url)); + } + + setState(environment: Environment) { + this.store.patch(environment); + } +}