All files / src/app/services config.service.ts

100% Statements 14/14
100% Branches 2/2
100% Functions 5/5
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 411x 1x 1x             1x   113x                 1x 66x           118x 118x   16x                 1x  
import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { startWith, tap } from 'rxjs/operators';
import { ConfigModel } from '../models';
 
/**
 * Config Service
 */
@Injectable()
export class ConfigService {
    /** collection of config */
    private readonly subject = new Subject<ConfigModel>();
 
    /** last config to keep live and use it many many times */
    private lastConfig: ConfigModel;
 
    /**
     * init config
     * @param configModel: ConfigModel
     */
    init(configModel: ConfigModel): void {
        this.subject.next(configModel);
    }
 
    /**
     * get current config
     */
    getConfig(): Observable<ConfigModel> {
        return this.subject.asObservable()
            .pipe(tap(config => {
                    this.lastConfig = config;
                }),
                startWith(this.lastConfig ? this.lastConfig : {
                    mainMenuItems: [],
                    primaryCustomHtmlWidget: undefined,
                    configSEO: {}
                })
            );
    }
}