@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
64 lines • 8.3 kB
JavaScript
import { Injectable } from "@angular/core";
import { interval, ReplaySubject } from "rxjs";
import { filter, take } from "rxjs/operators";
import * as i0 from "@angular/core";
import * as i1 from "../../../configuration/configuration.service";
export class SessionIdleTimerService {
_config;
static DEFAULT_SESSION_TIMEOUTTIME = 900;
_enableService;
_timeoutSeconds;
_count = 0;
timerSubscription;
timer = interval(1000);
_remainSeconds = new ReplaySubject(1);
remainSeconds$ = this._remainSeconds.asObservable();
constructor(_config) {
this._config = _config;
this._config.loaded$
.pipe(filter(loaded => loaded), take(1))
.subscribe(() => {
this._enableService = this._config.getConfigurationSubtreeByPath('providers.auth.sessionTimeoutEnabled') ?? false;
this._timeoutSeconds = this._config.getConfigurationSubtreeByPath('providers.auth.sessionTimeout') ?? SessionIdleTimerService.DEFAULT_SESSION_TIMEOUTTIME;
});
}
startTimer() {
if (this._enableService) {
this.stopTimer();
this._count = this._timeoutSeconds;
this.timerSubscription = this.timer.subscribe(n => {
if (this._count > 0) {
this._remainSeconds.next(this._count);
this._count--;
}
else if (this._count == 0) {
this._remainSeconds.next(this._count);
this.stopTimer();
}
});
}
}
stopTimer() {
if (this.timerSubscription) {
this.timerSubscription.unsubscribe();
}
}
resetTimer() {
this.startTimer();
}
ngOnDestroy() {
if (this._enableService) {
this.timerSubscription.unsubscribe();
this._remainSeconds.unsubscribe();
}
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SessionIdleTimerService, deps: [{ token: i1.ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SessionIdleTimerService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SessionIdleTimerService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.ConfigurationService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1pZGxlLXRpbWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2F1dGhlbnRpY2F0aW9uL3Nlc3Npb24vc2VydmljZXMvc2Vzc2lvbi1pZGxlLXRpbWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsUUFBUSxFQUFjLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUV2RSxPQUFPLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFLNUMsTUFBTSxPQUFPLHVCQUF1QjtJQWFWO0lBWGYsTUFBTSxDQUFVLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztJQUVqRCxjQUFjLENBQVU7SUFDeEIsZUFBZSxDQUFTO0lBQ3hCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsaUJBQWlCLENBQWdCO0lBQ2pDLEtBQUssR0FBdUIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLGNBQWMsR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUUvQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUzRCxZQUFzQixPQUE2QjtRQUE3QixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87YUFDZixJQUFJLENBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDVjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsc0NBQXNDLENBQUMsSUFBSSxLQUFLLENBQUM7WUFDbEgsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLCtCQUErQixDQUFDLElBQUksdUJBQXVCLENBQUMsMkJBQTJCLENBQUM7UUFDOUosQ0FBQyxDQUFDLENBQUM7SUFFWCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ2pCO3FCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2lCQUNwQjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQzt3R0F6RFEsdUJBQXVCOzRHQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTs7NEZBRVQsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge2ZpbHRlciwgdGFrZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2Vzc2lvbklkbGVUaW1lclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1NFU1NJT05fVElNRU9VVFRJTUUgPSA5MDA7XG5cbiAgICBwcml2YXRlIF9lbmFibGVTZXJ2aWNlOiBib29sZWFuO1xuICAgIHByaXZhdGUgX3RpbWVvdXRTZWNvbmRzOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfY291bnQ6IG51bWJlciA9IDA7XG4gICAgcHJpdmF0ZSB0aW1lclN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHRpbWVyOiBPYnNlcnZhYmxlPG51bWJlcj4gPSBpbnRlcnZhbCgxMDAwKTtcbiAgICBwcml2YXRlIF9yZW1haW5TZWNvbmRzID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigxKTtcblxuICAgIHB1YmxpYyByZW1haW5TZWNvbmRzJCA9IHRoaXMuX3JlbWFpblNlY29uZHMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2NvbmZpZzogQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnLmxvYWRlZCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihsb2FkZWQgPT4gbG9hZGVkKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbmFibGVTZXJ2aWNlID0gdGhpcy5fY29uZmlnLmdldENvbmZpZ3VyYXRpb25TdWJ0cmVlQnlQYXRoKCdwcm92aWRlcnMuYXV0aC5zZXNzaW9uVGltZW91dEVuYWJsZWQnKSA/PyBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl90aW1lb3V0U2Vjb25kcyA9IHRoaXMuX2NvbmZpZy5nZXRDb25maWd1cmF0aW9uU3VidHJlZUJ5UGF0aCgncHJvdmlkZXJzLmF1dGguc2Vzc2lvblRpbWVvdXQnKSA/PyBTZXNzaW9uSWRsZVRpbWVyU2VydmljZS5ERUZBVUxUX1NFU1NJT05fVElNRU9VVFRJTUU7XG4gICAgICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHN0YXJ0VGltZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLl9lbmFibGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgICAgICAgICAgdGhpcy5fY291bnQgPSB0aGlzLl90aW1lb3V0U2Vjb25kcztcbiAgICAgICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVyLnN1YnNjcmliZShuID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbWFpblNlY29uZHMubmV4dCh0aGlzLl9jb3VudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvdW50LS07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb3VudCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbWFpblNlY29uZHMubmV4dCh0aGlzLl9jb3VudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdG9wVGltZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldFRpbWVyKCkge1xuICAgICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2VuYWJsZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbWFpblNlY29uZHMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19