C:/GoDev/src/TCSTK-Angular/projects/tibco-tcstk/tc-liveapps-lib/src/lib/resolvers/la-config.resolver.ts
Methods |
constructor(sharedStateService: TcSharedStateService, generalConfigService: TcGeneralConfigService, liveAppsConfigService: TcLiveAppsConfigService, documentService: TcDocumentService, http: HttpClient, liveAppsService: LiveAppsService, caseCardConfigService: TcCaseCardConfigService, appDefinitionService: TcAppDefinitionService, location: Location, router: Router)
|
|||||||||||||||||||||||||||||||||
Parameters :
|
resolve | ||||||
resolve(routeSnapshot: ActivatedRouteSnapshot)
|
||||||
Parameters :
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$;
}
}