UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

64 lines 8.3 kB
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