@webex/internal-plugin-device 3.12.0-next.1 → 3.12.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.js +6 -1
- package/dist/constants.js.map +1 -1
- package/dist/device.js +135 -79
- package/dist/device.js.map +1 -1
- package/dist/ipNetworkDetector.js +1 -1
- package/package.json +3 -3
- package/src/constants.js +5 -0
- package/src/device.js +107 -26
- package/test/unit/spec/device.js +401 -6
package/dist/constants.js
CHANGED
|
@@ -4,7 +4,7 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
|
|
|
4
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.FEATURE_TYPES = exports.FEATURE_COLLECTION_USER = exports.FEATURE_COLLECTION_NAMES = exports.FEATURE_COLLECTION_ENTITLEMENT = exports.FEATURE_COLLECTION_DEVELOPER = exports.DEVICE_EVENT_REGISTRATION_SUCCESS = exports.DEVICE_EVENTS = exports.CISCO_DEVICE_URL = void 0;
|
|
7
|
+
exports.MIN_DEVICES_FOR_CLEANUP = exports.MAX_DELETION_CONFIRMATION_ATTEMPTS = exports.FEATURE_TYPES = exports.FEATURE_COLLECTION_USER = exports.FEATURE_COLLECTION_NAMES = exports.FEATURE_COLLECTION_ENTITLEMENT = exports.FEATURE_COLLECTION_DEVELOPER = exports.DEVICE_EVENT_REGISTRATION_SUCCESS = exports.DEVICE_EVENTS = exports.DELETION_CONFIRMATION_DELAY_MS = exports.CISCO_DEVICE_URL = void 0;
|
|
8
8
|
// Feature constants.
|
|
9
9
|
var FEATURE_COLLECTION_DEVELOPER = exports.FEATURE_COLLECTION_DEVELOPER = 'developer';
|
|
10
10
|
var FEATURE_COLLECTION_ENTITLEMENT = exports.FEATURE_COLLECTION_ENTITLEMENT = 'entitlement';
|
|
@@ -20,4 +20,9 @@ var FEATURE_TYPES = exports.FEATURE_TYPES = {
|
|
|
20
20
|
// Device constants.
|
|
21
21
|
var DEVICE_EVENT_REGISTRATION_SUCCESS = exports.DEVICE_EVENT_REGISTRATION_SUCCESS = 'registration:success';
|
|
22
22
|
var DEVICE_EVENTS = exports.DEVICE_EVENTS = [DEVICE_EVENT_REGISTRATION_SUCCESS];
|
|
23
|
+
|
|
24
|
+
// Device deletion constants.
|
|
25
|
+
var MIN_DEVICES_FOR_CLEANUP = exports.MIN_DEVICES_FOR_CLEANUP = 5;
|
|
26
|
+
var MAX_DELETION_CONFIRMATION_ATTEMPTS = exports.MAX_DELETION_CONFIRMATION_ATTEMPTS = 5;
|
|
27
|
+
var DELETION_CONFIRMATION_DELAY_MS = exports.DELETION_CONFIRMATION_DELAY_MS = 3000;
|
|
23
28
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FEATURE_COLLECTION_DEVELOPER","exports","FEATURE_COLLECTION_ENTITLEMENT","FEATURE_COLLECTION_USER","CISCO_DEVICE_URL","FEATURE_COLLECTION_NAMES","FEATURE_TYPES","BOOLEAN","NUMBER","STRING","DEVICE_EVENT_REGISTRATION_SUCCESS","DEVICE_EVENTS"],"sources":["constants.js"],"sourcesContent":["// Feature constants.\nexport const FEATURE_COLLECTION_DEVELOPER = 'developer';\nexport const FEATURE_COLLECTION_ENTITLEMENT = 'entitlement';\nexport const FEATURE_COLLECTION_USER = 'user';\n\nexport const CISCO_DEVICE_URL = 'cisco-device-url';\n\nexport const FEATURE_COLLECTION_NAMES = [\n FEATURE_COLLECTION_DEVELOPER,\n FEATURE_COLLECTION_ENTITLEMENT,\n FEATURE_COLLECTION_USER,\n];\n\nexport const FEATURE_TYPES = {\n BOOLEAN: 'boolean',\n NUMBER: 'number',\n STRING: 'string',\n};\n\n// Device constants.\nexport const DEVICE_EVENT_REGISTRATION_SUCCESS = 'registration:success';\n\nexport const DEVICE_EVENTS = [DEVICE_EVENT_REGISTRATION_SUCCESS];\n"],"mappings":";;;;;;;AAAA;AACO,IAAMA,4BAA4B,GAAAC,OAAA,CAAAD,4BAAA,GAAG,WAAW;AAChD,IAAME,8BAA8B,GAAAD,OAAA,CAAAC,8BAAA,GAAG,aAAa;AACpD,IAAMC,uBAAuB,GAAAF,OAAA,CAAAE,uBAAA,GAAG,MAAM;AAEtC,IAAMC,gBAAgB,GAAAH,OAAA,CAAAG,gBAAA,GAAG,kBAAkB;AAE3C,IAAMC,wBAAwB,GAAAJ,OAAA,CAAAI,wBAAA,GAAG,CACtCL,4BAA4B,EAC5BE,8BAA8B,EAC9BC,uBAAuB,CACxB;AAEM,IAAMG,aAAa,GAAAL,OAAA,CAAAK,aAAA,GAAG;EAC3BC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE;AACV,CAAC;;AAED;AACO,IAAMC,iCAAiC,GAAAT,OAAA,CAAAS,iCAAA,GAAG,sBAAsB;AAEhE,IAAMC,aAAa,GAAAV,OAAA,CAAAU,aAAA,GAAG,CAACD,iCAAiC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["FEATURE_COLLECTION_DEVELOPER","exports","FEATURE_COLLECTION_ENTITLEMENT","FEATURE_COLLECTION_USER","CISCO_DEVICE_URL","FEATURE_COLLECTION_NAMES","FEATURE_TYPES","BOOLEAN","NUMBER","STRING","DEVICE_EVENT_REGISTRATION_SUCCESS","DEVICE_EVENTS","MIN_DEVICES_FOR_CLEANUP","MAX_DELETION_CONFIRMATION_ATTEMPTS","DELETION_CONFIRMATION_DELAY_MS"],"sources":["constants.js"],"sourcesContent":["// Feature constants.\nexport const FEATURE_COLLECTION_DEVELOPER = 'developer';\nexport const FEATURE_COLLECTION_ENTITLEMENT = 'entitlement';\nexport const FEATURE_COLLECTION_USER = 'user';\n\nexport const CISCO_DEVICE_URL = 'cisco-device-url';\n\nexport const FEATURE_COLLECTION_NAMES = [\n FEATURE_COLLECTION_DEVELOPER,\n FEATURE_COLLECTION_ENTITLEMENT,\n FEATURE_COLLECTION_USER,\n];\n\nexport const FEATURE_TYPES = {\n BOOLEAN: 'boolean',\n NUMBER: 'number',\n STRING: 'string',\n};\n\n// Device constants.\nexport const DEVICE_EVENT_REGISTRATION_SUCCESS = 'registration:success';\n\nexport const DEVICE_EVENTS = [DEVICE_EVENT_REGISTRATION_SUCCESS];\n\n// Device deletion constants.\nexport const MIN_DEVICES_FOR_CLEANUP = 5;\nexport const MAX_DELETION_CONFIRMATION_ATTEMPTS = 5;\nexport const DELETION_CONFIRMATION_DELAY_MS = 3000;\n"],"mappings":";;;;;;;AAAA;AACO,IAAMA,4BAA4B,GAAAC,OAAA,CAAAD,4BAAA,GAAG,WAAW;AAChD,IAAME,8BAA8B,GAAAD,OAAA,CAAAC,8BAAA,GAAG,aAAa;AACpD,IAAMC,uBAAuB,GAAAF,OAAA,CAAAE,uBAAA,GAAG,MAAM;AAEtC,IAAMC,gBAAgB,GAAAH,OAAA,CAAAG,gBAAA,GAAG,kBAAkB;AAE3C,IAAMC,wBAAwB,GAAAJ,OAAA,CAAAI,wBAAA,GAAG,CACtCL,4BAA4B,EAC5BE,8BAA8B,EAC9BC,uBAAuB,CACxB;AAEM,IAAMG,aAAa,GAAAL,OAAA,CAAAK,aAAA,GAAG;EAC3BC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE;AACV,CAAC;;AAED;AACO,IAAMC,iCAAiC,GAAAT,OAAA,CAAAS,iCAAA,GAAG,sBAAsB;AAEhE,IAAMC,aAAa,GAAAV,OAAA,CAAAU,aAAA,GAAG,CAACD,iCAAiC,CAAC;;AAEhE;AACO,IAAME,uBAAuB,GAAAX,OAAA,CAAAW,uBAAA,GAAG,CAAC;AACjC,IAAMC,kCAAkC,GAAAZ,OAAA,CAAAY,kCAAA,GAAG,CAAC;AAC5C,IAAMC,8BAA8B,GAAAb,OAAA,CAAAa,8BAAA,GAAG,IAAI","ignoreList":[]}
|
package/dist/device.js
CHANGED
|
@@ -409,51 +409,105 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
409
409
|
});
|
|
410
410
|
},
|
|
411
411
|
/**
|
|
412
|
-
* Fetches
|
|
413
|
-
* @returns {Promise<
|
|
412
|
+
* Fetches devices matching the current device type.
|
|
413
|
+
* @returns {Promise<Array>} filtered device list
|
|
414
414
|
*/
|
|
415
|
-
|
|
416
|
-
var
|
|
417
|
-
|
|
415
|
+
_getDevicesOfCurrentType: function _getDevicesOfCurrentType() {
|
|
416
|
+
var _this$_getBody = this._getBody(),
|
|
417
|
+
deviceType = _this$_getBody.deviceType;
|
|
418
418
|
return this.request({
|
|
419
419
|
method: 'GET',
|
|
420
420
|
service: 'wdm',
|
|
421
421
|
resource: 'devices'
|
|
422
422
|
}).then(function (response) {
|
|
423
|
-
|
|
424
|
-
var _this2$_getBody = _this2._getBody(),
|
|
425
|
-
deviceType = _this2$_getBody.deviceType;
|
|
426
|
-
|
|
427
|
-
// Filter devices of type deviceType
|
|
428
|
-
var webDevices = devices.filter(function (item) {
|
|
423
|
+
return response.body.devices.filter(function (item) {
|
|
429
424
|
return item.deviceType === deviceType;
|
|
430
425
|
});
|
|
426
|
+
});
|
|
427
|
+
},
|
|
428
|
+
/**
|
|
429
|
+
* Waits until the server-side device count drops to or below targetCount,
|
|
430
|
+
* polling up to maxAttempts times with a delay between each check.
|
|
431
|
+
* @param {number} targetCount - resolve when device count drops to this value or below
|
|
432
|
+
* @param {number} [attempt=0]
|
|
433
|
+
* @returns {Promise<void>}
|
|
434
|
+
*/
|
|
435
|
+
_waitForDeviceCountBelowLimit: function _waitForDeviceCountBelowLimit(targetCount) {
|
|
436
|
+
var _this2 = this;
|
|
437
|
+
var attempt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
438
|
+
if (attempt >= _constants.MAX_DELETION_CONFIRMATION_ATTEMPTS) {
|
|
439
|
+
this.logger.warn('device: max confirmation attempts reached, proceeding anyway');
|
|
440
|
+
return _promise.default.resolve();
|
|
441
|
+
}
|
|
442
|
+
return new _promise.default(function (resolve) {
|
|
443
|
+
return setTimeout(resolve, _constants.DELETION_CONFIRMATION_DELAY_MS);
|
|
444
|
+
}).then(function () {
|
|
445
|
+
return _this2._getDevicesOfCurrentType();
|
|
446
|
+
}).then(function (devices) {
|
|
447
|
+
_this2.logger.info("device: confirmation check ".concat(attempt + 1, "/").concat(_constants.MAX_DELETION_CONFIRMATION_ATTEMPTS, ", ") + "".concat(devices.length, " devices remaining (target: \u2264 ").concat(targetCount, ")"));
|
|
448
|
+
if (devices.length <= targetCount) {
|
|
449
|
+
_this2.logger.info('device: device count is now safely below limit');
|
|
450
|
+
return _promise.default.resolve();
|
|
451
|
+
}
|
|
452
|
+
return _this2._waitForDeviceCountBelowLimit(targetCount, attempt + 1);
|
|
453
|
+
}).catch(function (error) {
|
|
454
|
+
_this2.logger.warn("device: confirmation check ".concat(attempt + 1, " failed, proceeding anyway:"), error);
|
|
455
|
+
return _promise.default.resolve();
|
|
456
|
+
});
|
|
457
|
+
},
|
|
458
|
+
/**
|
|
459
|
+
* Fetches the web devices and deletes the oldest third, then waits
|
|
460
|
+
* for the server to confirm the count is below the limit.
|
|
461
|
+
* @returns {Promise<void>}
|
|
462
|
+
*/
|
|
463
|
+
deleteDevices: function deleteDevices() {
|
|
464
|
+
var _this3 = this;
|
|
465
|
+
var targetCount;
|
|
466
|
+
return this._getDevicesOfCurrentType().then(function (webDevices) {
|
|
431
467
|
var sortedDevices = (0, _lodash.orderBy)(webDevices, [function (item) {
|
|
432
468
|
return new Date(item.modificationTime);
|
|
433
469
|
}]);
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
var totalItems = sortedDevices.length;
|
|
438
|
-
var countToDelete = Math.ceil(totalItems / 3);
|
|
439
|
-
var urlsToDelete = sortedDevices.slice(0, countToDelete).map(function (item) {
|
|
440
|
-
return item.url;
|
|
441
|
-
});
|
|
442
|
-
return _promise.default.race(urlsToDelete.map(function (url) {
|
|
443
|
-
return _this2.request({
|
|
444
|
-
uri: url,
|
|
445
|
-
method: 'DELETE'
|
|
446
|
-
});
|
|
447
|
-
}));
|
|
470
|
+
if (sortedDevices.length <= _constants.MIN_DEVICES_FOR_CLEANUP) {
|
|
471
|
+
_this3.logger.info("device: only ".concat(sortedDevices.length, " devices found (minimum ").concat(_constants.MIN_DEVICES_FOR_CLEANUP, "), skipping cleanup"));
|
|
472
|
+
return _promise.default.resolve();
|
|
448
473
|
}
|
|
449
|
-
|
|
474
|
+
var devicesToDelete = sortedDevices.slice(0, Math.ceil(sortedDevices.length / 3));
|
|
475
|
+
targetCount = sortedDevices.length - Math.min(5, devicesToDelete.length);
|
|
476
|
+
_this3.logger.info("device: deleting ".concat(devicesToDelete.length, " of ").concat(webDevices.length, " devices"));
|
|
477
|
+
return _promise.default.all(devicesToDelete.map(function (device) {
|
|
478
|
+
return _this3.request({
|
|
479
|
+
uri: device.url,
|
|
480
|
+
method: 'DELETE'
|
|
481
|
+
}).then(function () {
|
|
482
|
+
return {
|
|
483
|
+
status: 'fulfilled'
|
|
484
|
+
};
|
|
485
|
+
}).catch(function (reason) {
|
|
486
|
+
return {
|
|
487
|
+
status: 'rejected',
|
|
488
|
+
reason: reason
|
|
489
|
+
};
|
|
490
|
+
});
|
|
491
|
+
})).then(function (results) {
|
|
492
|
+
var failed = results.filter(function (r) {
|
|
493
|
+
return r.status === 'rejected';
|
|
494
|
+
});
|
|
495
|
+
if (failed.length > 0) {
|
|
496
|
+
_this3.logger.warn("device: ".concat(failed.length, " of ").concat(devicesToDelete.length, " deletions failed (best-effort, continuing)"));
|
|
497
|
+
}
|
|
498
|
+
_this3.logger.info("device: deleted ".concat(devicesToDelete.length - failed.length, " of ").concat(devicesToDelete.length, " devices"));
|
|
499
|
+
});
|
|
500
|
+
}).then(function () {
|
|
501
|
+
return targetCount !== undefined ? _this3._waitForDeviceCountBelowLimit(targetCount, 0) : _promise.default.resolve();
|
|
502
|
+
}).then(function () {
|
|
503
|
+
_this3.logger.info('device: device count confirmed below limit, cleanup successful');
|
|
450
504
|
}).catch(function (error) {
|
|
451
|
-
|
|
505
|
+
_this3.logger.error('device: failed to delete devices:', error);
|
|
452
506
|
return _promise.default.reject(error);
|
|
453
507
|
});
|
|
454
508
|
},
|
|
455
509
|
register: function register() {
|
|
456
|
-
var
|
|
510
|
+
var _this4 = this;
|
|
457
511
|
var deviceRegistrationOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
458
512
|
this.logger.info('device: registering');
|
|
459
513
|
this.webex.internal.newMetrics.callDiagnosticMetrics.setDeviceInfo(this);
|
|
@@ -461,15 +515,17 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
461
515
|
// Validate that the device can be registered.
|
|
462
516
|
return this.canRegister().then(function () {
|
|
463
517
|
// Validate if the device is already registered and refresh instead.
|
|
464
|
-
if (
|
|
465
|
-
|
|
466
|
-
return
|
|
518
|
+
if (_this4.registered) {
|
|
519
|
+
_this4.logger.info('device: device already registered, refreshing');
|
|
520
|
+
return _this4.refresh(deviceRegistrationOptions);
|
|
467
521
|
}
|
|
468
|
-
return
|
|
522
|
+
return _this4._registerInternal(deviceRegistrationOptions).catch(function (error) {
|
|
469
523
|
var _error$body;
|
|
470
524
|
if ((error === null || error === void 0 ? void 0 : (_error$body = error.body) === null || _error$body === void 0 ? void 0 : _error$body.message) === 'User has excessive device registrations') {
|
|
471
|
-
|
|
472
|
-
|
|
525
|
+
_this4.logger.info('device: excessive device registrations detected, initiating cleanup');
|
|
526
|
+
return _this4.deleteDevices().then(function () {
|
|
527
|
+
_this4.logger.info('device: device cleanup complete, retrying registration');
|
|
528
|
+
return _this4._registerInternal(deviceRegistrationOptions);
|
|
473
529
|
});
|
|
474
530
|
}
|
|
475
531
|
throw error;
|
|
@@ -480,7 +536,7 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
480
536
|
return _objectSpread(_objectSpread({}, this.config.defaults.body ? this.config.defaults.body : {}), this.config.body ? this.config.body : {});
|
|
481
537
|
},
|
|
482
538
|
_registerInternal: function _registerInternal() {
|
|
483
|
-
var
|
|
539
|
+
var _this5 = this;
|
|
484
540
|
var deviceRegistrationOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
485
541
|
this.logger.info('device: making registration request');
|
|
486
542
|
|
|
@@ -513,25 +569,25 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
513
569
|
includeUpstreamServices: "".concat(includeDetails).concat(this.config.energyForecast && this.energyForecastConfig ? ',energyforecast' : '')
|
|
514
570
|
}
|
|
515
571
|
}).catch(function (error) {
|
|
516
|
-
|
|
572
|
+
_this5.webex.internal.newMetrics.submitInternalEvent({
|
|
517
573
|
name: 'internal.register.device.response'
|
|
518
574
|
});
|
|
519
575
|
throw error;
|
|
520
576
|
}).then(function (response) {
|
|
521
577
|
// If we've signed out in the mean time, the request ID will have changed
|
|
522
|
-
if (
|
|
523
|
-
|
|
578
|
+
if (_this5.get('register-request-id') !== requestId) {
|
|
579
|
+
_this5.logger.info('device: register request ID mismatch, ignoring response');
|
|
524
580
|
return _promise.default.resolve();
|
|
525
581
|
}
|
|
526
582
|
|
|
527
583
|
// Do not add any processing of response above this as that will affect timestamp
|
|
528
|
-
|
|
584
|
+
_this5.webex.internal.newMetrics.submitInternalEvent({
|
|
529
585
|
name: 'internal.register.device.response'
|
|
530
586
|
});
|
|
531
|
-
|
|
532
|
-
return
|
|
587
|
+
_this5.webex.internal.metrics.submitClientMetrics(_metrics.default.JS_SDK_WDM_REGISTRATION_SUCCESSFUL);
|
|
588
|
+
return _this5.processRegistrationSuccess(response);
|
|
533
589
|
}).catch(function (error) {
|
|
534
|
-
|
|
590
|
+
_this5.webex.internal.metrics.submitClientMetrics(_metrics.default.JS_SDK_WDM_REGISTRATION_FAILED, {
|
|
535
591
|
fields: {
|
|
536
592
|
error: error
|
|
537
593
|
}
|
|
@@ -540,7 +596,7 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
540
596
|
});
|
|
541
597
|
},
|
|
542
598
|
unregister: function unregister() {
|
|
543
|
-
var
|
|
599
|
+
var _this6 = this;
|
|
544
600
|
this.logger.info('device: unregistering');
|
|
545
601
|
if (!this.registered) {
|
|
546
602
|
this.logger.warn('device: not registered');
|
|
@@ -550,11 +606,11 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
550
606
|
uri: this.url,
|
|
551
607
|
method: 'DELETE'
|
|
552
608
|
}).then(function () {
|
|
553
|
-
return
|
|
609
|
+
return _this6.clear();
|
|
554
610
|
}).catch(function (reason) {
|
|
555
611
|
if (reason.statusCode === 404) {
|
|
556
|
-
|
|
557
|
-
|
|
612
|
+
_this6.logger.info('device: 404 when deleting device, device is already deleted, clearing device');
|
|
613
|
+
_this6.clear();
|
|
558
614
|
}
|
|
559
615
|
throw reason;
|
|
560
616
|
});
|
|
@@ -588,7 +644,7 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
588
644
|
* @returns {Promise<void, Error>}
|
|
589
645
|
*/
|
|
590
646
|
checkNetworkReachability: function checkNetworkReachability() {
|
|
591
|
-
var
|
|
647
|
+
var _this7 = this;
|
|
592
648
|
this.logger.info('device: checking network reachability');
|
|
593
649
|
|
|
594
650
|
// Validate if the device has been checked and reset the logout timer.
|
|
@@ -616,13 +672,13 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
616
672
|
method: 'GET',
|
|
617
673
|
uri: this.intranetInactivityCheckUrl
|
|
618
674
|
}).then(function () {
|
|
619
|
-
|
|
620
|
-
return _promise.default.resolve(
|
|
675
|
+
_this7.isInNetwork = true;
|
|
676
|
+
return _promise.default.resolve(_this7.resetLogoutTimer());
|
|
621
677
|
}).catch(function () {
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
return _promise.default.resolve(
|
|
678
|
+
_this7.logger.info('device: did not reach ping endpoint');
|
|
679
|
+
_this7.logger.info('device: triggering off-network timer');
|
|
680
|
+
_this7.isInNetwork = false;
|
|
681
|
+
return _promise.default.resolve(_this7.resetLogoutTimer());
|
|
626
682
|
});
|
|
627
683
|
},
|
|
628
684
|
/**
|
|
@@ -647,7 +703,7 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
647
703
|
* @returns {Promise<string, Error>} - The priority-mapped web socket url.
|
|
648
704
|
*/
|
|
649
705
|
getWebSocketUrl: function getWebSocketUrl() {
|
|
650
|
-
var
|
|
706
|
+
var _this8 = this;
|
|
651
707
|
var wait = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
652
708
|
this.logger.info('device: getting the current websocket url');
|
|
653
709
|
|
|
@@ -657,9 +713,9 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
657
713
|
// Validate if the method should wait for registration.
|
|
658
714
|
if (wait) {
|
|
659
715
|
return this.waitForRegistration().then(function () {
|
|
660
|
-
return services.convertUrlToPriorityHostUrl(
|
|
716
|
+
return services.convertUrlToPriorityHostUrl(_this8.webSocketUrl);
|
|
661
717
|
}).catch(function (error) {
|
|
662
|
-
|
|
718
|
+
_this8.logger.warn(error.message);
|
|
663
719
|
return _promise.default.reject(new Error('device: failed to get the current websocket url'));
|
|
664
720
|
});
|
|
665
721
|
}
|
|
@@ -713,7 +769,7 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
713
769
|
*/
|
|
714
770
|
processRegistrationSuccess: function processRegistrationSuccess(response) {
|
|
715
771
|
var _body$features,
|
|
716
|
-
|
|
772
|
+
_this9 = this;
|
|
717
773
|
this.logger.info('device: received registration payload');
|
|
718
774
|
|
|
719
775
|
// Clone the response body for service cleaning.
|
|
@@ -757,7 +813,7 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
757
813
|
this.logger.info('device: enqueuing device refresh');
|
|
758
814
|
var delay = (this.config.ephemeralDeviceTTL / 2 + 60) * 1000;
|
|
759
815
|
this.refreshTimer = (0, _commonTimers.safeSetTimeout)(function () {
|
|
760
|
-
return
|
|
816
|
+
return _this9.refresh();
|
|
761
817
|
}, delay);
|
|
762
818
|
}
|
|
763
819
|
|
|
@@ -799,7 +855,7 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
799
855
|
* @returns {void}
|
|
800
856
|
*/
|
|
801
857
|
setLogoutTimer: function setLogoutTimer(duration) {
|
|
802
|
-
var
|
|
858
|
+
var _this0 = this;
|
|
803
859
|
this.logger.info('device: setting logout timer');
|
|
804
860
|
if (!duration || duration <= 0) {
|
|
805
861
|
return;
|
|
@@ -807,12 +863,12 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
807
863
|
|
|
808
864
|
// Setup user activity date event listener.
|
|
809
865
|
this.on('change:lastUserActivityDate', function () {
|
|
810
|
-
|
|
866
|
+
_this0.resetLogoutTimer();
|
|
811
867
|
});
|
|
812
868
|
|
|
813
869
|
// Initialize a new timer.
|
|
814
870
|
this.logoutTimer = (0, _commonTimers.safeSetTimeout)(function () {
|
|
815
|
-
|
|
871
|
+
_this0.webex.logout();
|
|
816
872
|
}, duration * 1000);
|
|
817
873
|
},
|
|
818
874
|
/**
|
|
@@ -822,17 +878,17 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
822
878
|
* @returns {Promise<void, Error>}
|
|
823
879
|
*/
|
|
824
880
|
waitForRegistration: function waitForRegistration() {
|
|
825
|
-
var
|
|
881
|
+
var _this1 = this;
|
|
826
882
|
var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
|
|
827
883
|
this.logger.info('device: waiting for registration');
|
|
828
884
|
return new _promise.default(function (resolve, reject) {
|
|
829
|
-
if (
|
|
885
|
+
if (_this1.registered) {
|
|
830
886
|
resolve();
|
|
831
887
|
}
|
|
832
888
|
var timeoutTimer = (0, _commonTimers.safeSetTimeout)(function () {
|
|
833
889
|
return reject(new Error('device: timeout occured while waiting for registration'));
|
|
834
890
|
}, timeout * 1000);
|
|
835
|
-
|
|
891
|
+
_this1.once(_constants.DEVICE_EVENT_REGISTRATION_SUCCESS, function () {
|
|
836
892
|
clearTimeout(timeoutTimer);
|
|
837
893
|
resolve();
|
|
838
894
|
});
|
|
@@ -842,7 +898,7 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
842
898
|
return _promise.default.resolve(this.webex.internal.services.markFailedUrl(url));
|
|
843
899
|
},
|
|
844
900
|
initialize: function initialize() {
|
|
845
|
-
var
|
|
901
|
+
var _this10 = this;
|
|
846
902
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
847
903
|
args[_key2] = arguments[_key2];
|
|
848
904
|
}
|
|
@@ -850,52 +906,52 @@ var Device = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)(
|
|
|
850
906
|
(0, _apply.default)(_webexCore.WebexPlugin.prototype.initialize, this, args);
|
|
851
907
|
this.listenToOnce(this.webex, 'change:config', function () {
|
|
852
908
|
// If debug feature toggles exist, clear the etag to ensure developer feature toggles are fetched
|
|
853
|
-
if (
|
|
854
|
-
|
|
909
|
+
if (_this10.getDebugFeatures(_this10.config.debugFeatureTogglesKey).length > 0) {
|
|
910
|
+
_this10.set('etag', undefined);
|
|
855
911
|
}
|
|
856
912
|
});
|
|
857
913
|
|
|
858
914
|
// Initialize feature events and listeners.
|
|
859
915
|
_constants.FEATURE_COLLECTION_NAMES.forEach(function (collectionName) {
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
916
|
+
_this10.features.on("change:".concat(collectionName), function (model, value, options) {
|
|
917
|
+
_this10.trigger('change', _this10, options);
|
|
918
|
+
_this10.trigger('change:features', _this10, _this10.features, options);
|
|
863
919
|
});
|
|
864
920
|
});
|
|
865
921
|
|
|
866
922
|
// Initialize network reachability checking event for url change.
|
|
867
923
|
this.on('change:intranetInactivityCheckUrl', function () {
|
|
868
|
-
|
|
924
|
+
_this10.checkNetworkReachability();
|
|
869
925
|
});
|
|
870
926
|
|
|
871
927
|
// Initialize network reachability checking event for duration change.
|
|
872
928
|
this.on('change:intranetInactivityDuration', function () {
|
|
873
|
-
|
|
929
|
+
_this10.checkNetworkReachability();
|
|
874
930
|
});
|
|
875
931
|
|
|
876
932
|
// Initialize network reachability checking event for duration change.
|
|
877
933
|
this.on('change:inNetworkInactivityDuration', function () {
|
|
878
|
-
|
|
934
|
+
_this10.checkNetworkReachability();
|
|
879
935
|
});
|
|
880
936
|
|
|
881
937
|
// Initialize listener for activity checking.
|
|
882
938
|
this.listenTo(this.webex, 'user-activity', function () {
|
|
883
|
-
|
|
939
|
+
_this10.lastUserActivityDate = (0, _now.default)();
|
|
884
940
|
});
|
|
885
941
|
|
|
886
942
|
// Initialize listener for meeting started event.
|
|
887
943
|
this.listenTo(this.webex, 'meeting started', function () {
|
|
888
|
-
|
|
889
|
-
|
|
944
|
+
_this10.isInMeeting = true;
|
|
945
|
+
_this10.resetLogoutTimer();
|
|
890
946
|
});
|
|
891
947
|
|
|
892
948
|
// Initialize listener for meeting ended event.
|
|
893
949
|
this.listenTo(this.webex, 'meeting ended', function () {
|
|
894
|
-
|
|
895
|
-
|
|
950
|
+
_this10.isInMeeting = false;
|
|
951
|
+
_this10.resetLogoutTimer();
|
|
896
952
|
});
|
|
897
953
|
} /* eslint-enable require-jsdoc */,
|
|
898
|
-
version: "3.12.0-next.
|
|
954
|
+
version: "3.12.0-next.2"
|
|
899
955
|
}, (0, _applyDecoratedDescriptor2.default)(_obj, "refresh", [_common.oneFlight, _dec], (0, _getOwnPropertyDescriptor.default)(_obj, "refresh"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "register", [_dec2], (0, _getOwnPropertyDescriptor.default)(_obj, "register"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "_registerInternal", [_common.oneFlight, _dec3], (0, _getOwnPropertyDescriptor.default)(_obj, "_registerInternal"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "unregister", [_common.oneFlight, _dec4], (0, _getOwnPropertyDescriptor.default)(_obj, "unregister"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "markUrlFailedAndGetNew", [_dec5], (0, _getOwnPropertyDescriptor.default)(_obj, "markUrlFailedAndGetNew"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "initialize", [_dec6], (0, _getOwnPropertyDescriptor.default)(_obj, "initialize"), _obj), _obj));
|
|
900
956
|
var _default = exports.default = Device;
|
|
901
957
|
//# sourceMappingURL=device.js.map
|