File
Index
Properties
|
|
Methods
|
|
Accessors
|
|
Private
_events
|
Default value : new Subject<SdkEvent>()
|
|
import { Injectable } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Observable, Subject } from 'rxjs';
import { first } from 'rxjs/operators';
import { GesdemHandlerService } from '../gesdem/gesdem-handler.service';
import { DemandeHelper } from '../helpers/demande.helper';
import { SdkEvent } from '../sdk-events-logger/sdk-event';
import { SdkEventType } from '../sdk-events-logger/sdk-event-type';
import { SessionInfo } from '../sdk-session-info/session-info.service';
@Injectable({
providedIn: 'root'
})
export class SdkEventsLoggerService {
private _events = new Subject<SdkEvent>();
constructor(
private activatedRoute: ActivatedRoute,
private gesdemService: GesdemHandlerService,
private sessionInfo: SessionInfo
) {}
get events(): Observable<SdkEvent> {
return this._events.asObservable();
}
addEvent(type: SdkEventType | string, detail?: string): void {
const timestamp = new Date();
const reference =
DemandeHelper.getSafeReference(
this.activatedRoute.snapshot.params.reference
) ||
DemandeHelper.getSafeReference(
this.gesdemService.lastResponse?.meta?.reference
);
this.sessionInfo.data.pipe(first()).subscribe(sessionInfoData => {
const event: SdkEvent = {
timestamp,
reference,
sessionInfoContext: sessionInfoData?.context || null,
type,
detail: detail || null
};
this._events.next(event);
});
}
}