@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
49 lines • 10.3 kB
JavaScript
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==