react-application-core
Version:
A react-based application core for the business applications.
150 lines • 6.52 kB
JavaScript
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserActivityManager = void 0;
var R = require("ramda");
var inversify_1 = require("inversify");
var ts_smart_logger_1 = require("ts-smart-logger");
var di_1 = require("../../di");
var definition_1 = require("../../definition");
var util_1 = require("../../util");
var UserActivityManager = /** @class */ (function () {
/**
* @stable [19.01.2020]
*/
function UserActivityManager() {
this.onUserActivate = this.onUserActivate.bind(this);
}
UserActivityManager_1 = UserActivityManager;
/**
* @stable [19.01.2020]
* @param {IUserActivityConfigEntity} cfg
*/
UserActivityManager.prototype.spy = function (cfg) {
if (!R.isNil(this.inactivityTask)) {
this.cancel();
}
var callback = cfg.callback, timeout = cfg.timeout;
this.touchStartEventUnsubscriber = this.domAccessor.captureEvent({
eventName: definition_1.TouchEventsEnum.TOUCH_START,
element: this.environment.document,
callback: this.onUserActivate,
});
this.touchMoveEventUnsubscriber = this.domAccessor.captureEvent({
eventName: definition_1.TouchEventsEnum.TOUCH_MOVE,
element: this.environment.document,
callback: this.onUserActivate,
});
this.mouseDownEventUnsubscriber = this.domAccessor.captureEvent({
eventName: definition_1.EventsEnum.MOUSE_DOWN,
element: this.environment.document,
callback: this.onUserActivate,
});
this.mouseMoveEventUnsubscriber = this.domAccessor.captureEvent({
eventName: definition_1.EventsEnum.MOUSE_MOVE,
element: this.environment.document,
callback: this.onUserActivate,
});
this.keyPressEventUnsubscriber = this.domAccessor.captureEvent({
eventName: definition_1.EventsEnum.KEY_PRESS,
element: this.environment.document,
callback: this.onUserActivate,
});
this.inactivityTask = new util_1.DelayedTask(this.onUserDeactivate.bind(this, callback), timeout * 1000);
this.inactivityTask.start();
UserActivityManager_1.logger.debug('[$$UserActivityManager][spy] The config:', cfg);
};
/**
* @stable [19.01.2020]
*/
UserActivityManager.prototype.suspend = function () {
var _this = this;
util_1.ConditionUtils.ifNotNilThanValue(this.inactivityTask, function (inactivityTask) {
_this.suspended = true;
inactivityTask.stop();
UserActivityManager_1.logger.debug('[$$UserActivityManager][suspend]');
});
};
/**
* @stable [19.01.2020]
*/
UserActivityManager.prototype.resume = function () {
var _this = this;
util_1.ConditionUtils.ifNotNilThanValue(this.inactivityTask, function (inactivityTask) {
_this.suspended = false;
inactivityTask.start();
UserActivityManager_1.logger.debug('[$$UserActivityManager][resume]');
});
};
/**
* @stable [19.01.2020]
*/
UserActivityManager.prototype.cancel = function () {
this.suspended = false;
util_1.ConditionUtils.ifNotNilThanValue(this.inactivityTask, function (inactivityTask) { return inactivityTask.stop(); });
this.inactivityTask = null;
if (util_1.TypeUtils.isFn(this.touchStartEventUnsubscriber)) {
this.touchStartEventUnsubscriber();
this.touchStartEventUnsubscriber = null;
}
if (util_1.TypeUtils.isFn(this.touchMoveEventUnsubscriber)) {
this.touchMoveEventUnsubscriber();
this.touchMoveEventUnsubscriber = null;
}
if (util_1.TypeUtils.isFn(this.mouseDownEventUnsubscriber)) {
this.mouseDownEventUnsubscriber();
this.mouseDownEventUnsubscriber = null;
}
if (util_1.TypeUtils.isFn(this.mouseMoveEventUnsubscriber)) {
this.mouseMoveEventUnsubscriber();
this.mouseMoveEventUnsubscriber = null;
}
if (util_1.TypeUtils.isFn(this.keyPressEventUnsubscriber)) {
this.keyPressEventUnsubscriber();
this.keyPressEventUnsubscriber = null;
}
UserActivityManager_1.logger.debug('[$$UserActivityManager][cancel]');
};
/**
* @stable [19.01.2020]
* @param {() => void} callback
*/
UserActivityManager.prototype.onUserDeactivate = function (callback) {
this.cancel();
callback();
};
/**
* @stable [19.01.2020]
*/
UserActivityManager.prototype.onUserActivate = function () {
if (this.suspended) {
return;
}
this.inactivityTask.start();
};
var UserActivityManager_1;
UserActivityManager.logger = ts_smart_logger_1.LoggerFactory.makeLogger('UserActivityManager');
__decorate([
di_1.lazyInject(di_1.DI_TYPES.DomAccessor),
__metadata("design:type", Object)
], UserActivityManager.prototype, "domAccessor", void 0);
__decorate([
di_1.lazyInject(di_1.DI_TYPES.Environment),
__metadata("design:type", Object)
], UserActivityManager.prototype, "environment", void 0);
UserActivityManager = UserActivityManager_1 = __decorate([
inversify_1.injectable(),
__metadata("design:paramtypes", [])
], UserActivityManager);
return UserActivityManager;
}());
exports.UserActivityManager = UserActivityManager;
//# sourceMappingURL=user-activity-manager.serivce.js.map