Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

import { Injectable } from '@angular/core';
import { Store } from '@ngrx/store';
import * as sessionActions from '../actions/session.action';
import { HttpClient } from '@angular/common/http';
import { UserIdentity, AppData } from '../models/sessionModels';
import { ModalData } from '../models/uiModels';
import { environment } from '../../environments/environment';

@Injectable()
export class SessionService {

private resources = {...environment.sessionServices};

constructor(public http: HttpClient, private _store: Store<any>) {
this.loadContexts();
this.loadAppInfo();
}

/**
* Retrieves build details for the API service
*/
loadAppInfo(): void {

this.http.get<AppData>(this.resources.appInfo).subscribe((res: any) => {
const dat = {
appVersion: this.resources.appVersion,
apiVersion: res.buildVersion,
buildEnv: this.resources.appEnv
};
this._store.dispatch(new sessionActions.SetAppInfo(dat));
}, (error: any) => {
this.addMessage({title: 'Error', body: 'Unable to load app build/environment info. This is not a fatal error.'});
});
}

/**
* retrieves user profile(s)
*/
loadContexts(): void {
this.http.get<UserIdentity[]>(this.resources.userProfiles).subscribe((res: UserIdentity[]) => {
this._store.dispatch(new sessionActions.SetAvailableIdentities(res));
this._store.dispatch(new sessionActions.SetActiveIdentity(res[0]));
}, (error: any) => {
this.addMessage({title: 'Error', body: 'Unable to load user identities'});
});
}

/**
* For adding a popup message to the queue
*/
addMessage(m: ModalData) {
this._store.dispatch(new sessionActions.AddUIMessage(m));
}

/**
* for removing a popup message from the queue
*/
removeMessage(i: number) {
this._store.dispatch(new sessionActions.RemoveUIMessage(i));
}
}