1 import {Inject, Injectable} from '@angular/core';
2 import {Observable} from 'rxjs/Observable';
3 import {Http, Response} from '@angular/http';
4 import {IApi, IAppConfigurtaion, Plugin, PluginsConfiguration} from "app/models";
5 import {ISdcConfig, SdcConfigToken} from "../config/sdc-config.config";
8 export class PluginsService {
10 public configuration: IAppConfigurtaion;
14 constructor(private http: Http, @Inject(SdcConfigToken) private sdcConfig: ISdcConfig) {
15 this.api = this.sdcConfig.api;
16 this.baseUrl = this.api.root + this.sdcConfig.api.component_api_root;
19 public getPluginByStateUrl = (stateUrl: string) => {
20 let pluginKey: any = _.findKey(PluginsConfiguration.plugins, (pluginConfig: Plugin) => {
21 return pluginConfig.pluginStateUrl === stateUrl;
24 return PluginsConfiguration.plugins[pluginKey];
27 public isPluginDisplayedInContext = (plugin: Plugin, userRole: string, contextType: string) => {
28 return plugin.pluginDisplayOptions["context"] &&
29 plugin.pluginDisplayOptions["context"].displayRoles.includes(userRole) &&
30 plugin.pluginDisplayOptions["context"].displayContext.indexOf(contextType) !== -1
33 public isPluginOnline = (pluginId: string): Observable<boolean> => {
34 let url: string = this.api.no_proxy_root + this.api.GET_plugin_online_state.replace(':pluginId', pluginId);
35 return this.http.get(url).map((res: Response) => {
38 .catch(error => Observable.of(false));