File

C:/GoDev/src/TCSTK-Angular/projects/tibco-tcstk/tc-liveapps-lib/src/lib/resolvers/la-config.resolver.ts

Index

Methods

Constructor

constructor(sharedStateService: TcSharedStateService, generalConfigService: TcGeneralConfigService, liveAppsConfigService: TcLiveAppsConfigService, documentService: TcDocumentService, http: HttpClient, liveAppsService: LiveAppsService, caseCardConfigService: TcCaseCardConfigService, appDefinitionService: TcAppDefinitionService, location: Location, router: Router)
Parameters :
Name Type Optional
sharedStateService TcSharedStateService No
generalConfigService TcGeneralConfigService No
liveAppsConfigService TcLiveAppsConfigService No
documentService TcDocumentService No
http HttpClient No
liveAppsService LiveAppsService No
caseCardConfigService TcCaseCardConfigService No
appDefinitionService TcAppDefinitionService No
location Location No
router Router No

Methods

resolve
resolve(routeSnapshot: ActivatedRouteSnapshot)
Parameters :
Name Type Optional
routeSnapshot ActivatedRouteSnapshot No
Returns : Observable<LiveAppsConfigHolder>
import { Injectable } from '@angular/core';
import {ActivatedRouteSnapshot, Resolve, Router} from '@angular/router';
import {forkJoin, Observable, of} from 'rxjs';
import {GeneralConfigResolver, UiAppConfig, GeneralConfig, TcGeneralConfigService} from '@tibco-tcstk/tc-core-lib';
import {flatMap, map, mergeMap} from 'rxjs/operators';
import {TcSharedStateService} from '@tibco-tcstk/tc-core-lib';
import {Claim} from '@tibco-tcstk/tc-core-lib';
import {ClaimsResolver} from './claims.resolver';
import {LiveAppsService} from '../services/live-apps.service';
import {HttpClient} from '@angular/common/http';
import {TcDocumentService} from '../services/tc-document.service';
import {LiveAppsConfig, LiveAppsConfigHolder} from '../models/tc-liveapps-config';
import {LiveAppsConfigResolver} from './liveapps-config.resolver';
import {TcLiveAppsConfigService} from '../services/tc-live-apps-config.service';
import {TcCaseCardConfigService} from '../services/tc-case-card-config.service';
import {Location} from '@angular/common';
import {TcAppDefinitionService} from '../services/tc-app-definition.service';

@Injectable()
export class LaConfigResolver implements Resolve<Observable<LiveAppsConfigHolder>> {

  constructor(private sharedStateService: TcSharedStateService, private generalConfigService: TcGeneralConfigService, private liveAppsConfigService: TcLiveAppsConfigService, private documentService: TcDocumentService, private http: HttpClient, private liveAppsService: LiveAppsService, private caseCardConfigService: TcCaseCardConfigService, private appDefinitionService: TcAppDefinitionService, private location: Location, private router: Router) {}

  resolve(routeSnapshot: ActivatedRouteSnapshot): Observable<LiveAppsConfigHolder> {
    // we will return a holder object that contains both general config and live apps config

    const generalConfigResolver = new GeneralConfigResolver(this.sharedStateService, this.generalConfigService, this.http, this.location, this.router);
    const liveAppsConfigResolver = new LiveAppsConfigResolver(this.sharedStateService, this.liveAppsConfigService, this.caseCardConfigService, this.http, this.location);

    const sandboxId = this.appDefinitionService.sandboxId;
    generalConfigResolver.setSandbox(sandboxId);
    liveAppsConfigResolver.setSandbox(sandboxId);

    const generalConfig$ = generalConfigResolver.resolve();
    const liveAppsConfig$ = liveAppsConfigResolver.resolve(routeSnapshot);
    const forkJoinArray = [generalConfig$, liveAppsConfig$];
    const calls$ = forkJoin(forkJoinArray).pipe(
      map(resultArr => {
        return new LiveAppsConfigHolder().deserialize({ generalConfig: resultArr[0], liveAppsConfig: resultArr[1] });
      }));

    const resolveResp$ = calls$.pipe(
      flatMap(liveAppsConfigHolder => {
        const topOrgFolder$ = this.documentService.initOrgFolder(liveAppsConfigHolder.generalConfig.uiAppId);
        const iconsFolder$ = this.documentService.initOrgFolder(liveAppsConfigHolder.generalConfig.uiAppId + '_Icons');
        const docsFolder$ = this.documentService.initOrgFolder(liveAppsConfigHolder.generalConfig.uiAppId + '_Docs');
        const forkJoinArray2 = [topOrgFolder$, iconsFolder$, docsFolder$];
        return forkJoin(forkJoinArray2).pipe(
          map(
            resultArr => {
              return liveAppsConfigHolder;
            }
          )
        );
      })
    )

    return resolveResp$;
  }

}

result-matching ""

    No results matching ""