UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

49 lines 10.3 kB
import { Injectable } from '@angular/core'; import { get, orderBy } from 'lodash-es'; import { combineLatest } from 'rxjs'; import { map, shareReplay, take } from 'rxjs/operators'; import { AppStateService } from '../common'; import * as i0 from "@angular/core"; import * as i1 from "../common"; export class AppSwitcherService { constructor(ui) { this.ui = ui; this.visibleApplicationTypes = ['HOSTED', 'EXTERNAL']; const { currentTenant } = this.ui; this.appsOfCurrentUser$ = this.ui.currentAppsOfUser.pipe(map(apps => this.filterVisible(apps)), shareReplay(1)); this.oneCloudApps$ = this.appsOfCurrentUser$.pipe(map(apps => apps.filter(app => this.isCloudApp(app))), map(cloudApps => this.orderApps(cloudApps)), shareReplay(1)); const nonCloudApps$ = this.appsOfCurrentUser$.pipe(map(apps => apps.filter(app => !this.isCloudApp(app)))); this.apps$ = combineLatest([nonCloudApps$, currentTenant]).pipe(map(([apps, tenant]) => this.filterDuplicates(apps, tenant)), map(apps => this.orderApps(apps)), shareReplay(1)); this.finishedLoading$ = combineLatest([this.apps$, this.oneCloudApps$]).pipe(map(() => true), take(1), shareReplay(1)); } filterVisible(apps) { return apps.filter(app => this.visibleApplicationTypes.includes(app.type) && !app.noAppSwitcher && !this.isPackage(app) && !get(app, 'manifest.noAppSwitcher')); } isPackage(app) { return !!app.manifest?.isPackage; } isCloudApp(app) { return !!app.cloud; } filterDuplicates(apps, tenant) { // Filter out apps that have duplicate contextpaths and are not own owned by the current tenant; const filterFn = app => !apps.some(otherApp => app !== otherApp && app.contextPath && app.contextPath === otherApp.contextPath && app.owner.tenant.id !== tenant.name); return apps.filter(filterFn); } orderApps(apps) { return orderBy(apps, ({ name }) => name.toLowerCase()); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppSwitcherService, deps: [{ token: i1.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppSwitcherService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppSwitcherService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.AppStateService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2FwcGxpY2F0aW9uL2FwcC1zd2l0Y2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFHNUMsTUFBTSxPQUFPLGtCQUFrQjtJQWlCN0IsWUFBc0IsRUFBbUI7UUFBbkIsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFGdEIsNEJBQXVCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFHbEUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3JDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVB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b20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uLCBJQ3VycmVudFRlbmFudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldCwgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBcHBTd2l0Y2hlclNlcnZpY2Uge1xuICAvKipcbiAgICogQXBwcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgKi9cbiAgYXBwc09mQ3VycmVudFVzZXIkOiBPYnNlcnZhYmxlPEFycmF5PElBcHBsaWNhdGlvbj4+O1xuICAvKipcbiAgICogQXZhaWxhYmxlIGNsb3VkIGFwcHMgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyLlxuICAgKi9cbiAgb25lQ2xvdWRBcHBzJDogT2JzZXJ2YWJsZTxBcnJheTxJQXBwbGljYXRpb24+PjtcbiAgLyoqXG4gICAqIEF2YWlsYWJsZSBub25lIGNsb3VkIGFwcHMgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyLlxuICAgKi9cbiAgYXBwcyQ6IE9ic2VydmFibGU8QXJyYXk8SUFwcGxpY2F0aW9uPj47XG4gIGZpbmlzaGVkTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpc2libGVBcHBsaWNhdGlvblR5cGVzID0gWydIT1NURUQnLCAnRVhURVJOQUwnXTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdWk6IEFwcFN0YXRlU2VydmljZSkge1xuICAgIGNvbnN0IHsgY3VycmVudFRlbmFudCB9ID0gdGhpcy51aTtcbiAgICB0aGlzLmFwcHNPZkN1cnJlbnRVc2VyJCA9IHRoaXMudWkuY3VycmVudEFwcHNPZlVzZXIucGlwZShcbiAgICAgIG1hcChhcHBzID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhcHBzKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gICAgdGhpcy5vbmVDbG91ZEFwcHMkID0gdGhpcy5hcHBzT2ZDdXJyZW50VXNlciQucGlwZShcbiAgICAgIG1hcChhcHBzID0+IGFwcHMuZmlsdGVyKGFwcCA9PiB0aGlzLmlzQ2xvdWRBcHAoYXBwKSkpLFxuICAgICAgbWFwKGNsb3VkQXBwcyA9PiB0aGlzLm9yZGVyQXBwcyhjbG91ZEFwcHMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgICBjb25zdCBub25DbG91ZEFwcHMkID0gdGhpcy5hcHBzT2ZDdXJyZW50VXNlciQucGlwZShcbiAgICAgIG1hcChhcHBzID0+IGFwcHMuZmlsdGVyKGFwcCA9PiAhdGhpcy5pc0Nsb3VkQXBwKGFwcCkpKVxuICAgICk7XG4gICAgdGhpcy5hcHBzJCA9IGNvbWJpbmVMYXRlc3QoW25vbkNsb3VkQXBwcyQsIGN1cnJlbnRUZW5hbnRdKS5waXBlKFxuICAgICAgbWFwKChbYXBwcywgdGVuYW50XSkgPT4gdGhpcy5maWx0ZXJEdXBsaWNhdGVzKGFwcHMsIHRlbmFudCkpLFxuICAgICAgbWFwKGFwcHMgPT4gdGhpcy5vcmRlckFwcHMoYXBwcykpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5maW5pc2hlZExvYWRpbmckID0gY29tYmluZUxhdGVzdChbdGhpcy5hcHBzJCwgdGhpcy5vbmVDbG91ZEFwcHMkXSkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsdGVyVmlzaWJsZShhcHBzOiBJQXBwbGljYXRpb25bXSk6IElBcHBsaWNhdGlvbltdIHtcbiAgICByZXR1cm4gYXBwcy5maWx0ZXIoXG4gICAgICBhcHAgPT5cbiAgICAgICAgdGhpcy52aXNpYmxlQXBwbGljYXRpb25UeXBlcy5pbmNsdWRlcyhhcHAudHlwZSkgJiZcbiAgICAgICAgIWFwcC5ub0FwcFN3aXRjaGVyICYmXG4gICAgICAgICF0aGlzLmlzUGFja2FnZShhcHApICYmXG4gICAgICAgICFnZXQoYXBwLCAnbWFuaWZlc3Qubm9BcHBTd2l0Y2hlcicpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1BhY2thZ2UoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFhcHAubWFuaWZlc3Q/LmlzUGFja2FnZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0Nsb3VkQXBwKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhYXBwLmNsb3VkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbHRlckR1cGxpY2F0ZXMoYXBwczogSUFwcGxpY2F0aW9uW10sIHRlbmFudDogSUN1cnJlbnRUZW5hbnQpOiBJQXBwbGljYXRpb25bXSB7XG4gICAgLy8gRmlsdGVyIG91dCBhcHBzIHRoYXQgaGF2ZSBkdXBsaWNhdGUgY29udGV4dHBhdGhzIGFuZCBhcmUgbm90IG93biBvd25lZCBieSB0aGUgY3VycmVudCB0ZW5hbnQ7XG4gICAgY29uc3QgZmlsdGVyRm4gPSBhcHAgPT5cbiAgICAgICFhcHBzLnNvbWUoXG4gICAgICAgIG90aGVyQXBwID0+XG4gICAgICAgICAgYXBwICE9PSBvdGhlckFwcCAmJlxuICAgICAgICAgIGFwcC5jb250ZXh0UGF0aCAmJlxuICAgICAgICAgIGFwcC5jb250ZXh0UGF0aCA9PT0gb3RoZXJBcHAuY29udGV4dFBhdGggJiZcbiAgICAgICAgICBhcHAub3duZXIudGVuYW50LmlkICE9PSB0ZW5hbnQubmFtZVxuICAgICAgKTtcbiAgICByZXR1cm4gYXBwcy5maWx0ZXIoZmlsdGVyRm4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9yZGVyQXBwcyhhcHBzOiBJQXBwbGljYXRpb25bXSk6IElBcHBsaWNhdGlvbltdIHtcbiAgICByZXR1cm4gb3JkZXJCeShhcHBzLCAoeyBuYW1lIH0pID0+IG5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cbn1cbiJdfQ==